如何选取多个不同来源的值进行拼接?拼接时出现语法错误如何解决
跨数据源值拼接语法错误修复方案
- 子查询参数括号缺失问题
如果你直接把两个独立数据源的查询语句作为拼接函数参数,必须给每个子查询单独套括号,且保证每个子查询仅返回1个值:
错误写法:SELECT CONCAT(SELECT price FROM source1.goods, SELECT goods_name FROM source2.goods_info)
正确写法:SELECT CONCAT((SELECT price FROM source1.goods LIMIT 1), '-', (SELECT goods_name FROM source2.goods_info LIMIT 1)) - 语法不兼容问题
不同数据源的拼接函数语法存在差异,需要统一语法规则:- MySQL、PostgreSQL、Spark SQL 用
CONCAT(参数1, 参数2, ...) - Oracle 支持
CONCAT函数或者||运算符拼接:val1 || val2 - SQL Server 支持
CONCAT函数或者+运算符拼接字符串
- MySQL、PostgreSQL、Spark SQL 用
- 字段类型不匹配问题
拼接的两个值如果存在数值、日期等非字符串类型,需要先做类型转换再拼接,避免隐式转换报错:
示例(MySQL写法):SELECT CONCAT(CAST(数值字段 AS CHAR), CAST(日期字段 AS CHAR)) - 跨表关联拼接字段缺失别名
如果是两张表关联后取字段拼接,要给字段加上对应表的别名,避免同名字段冲突报错:
示例:SELECT CONCAT(a.user_name, b.order_no) FROM source1.user a JOIN source2.order b ON a.user_id = b.user_id
内容的提问来源于stack exchange,提问作者Anusha N
相关产品推荐
相关产品推荐

