问题描述
我正在尝试使用 concat 和 concat_ws 函数连接两列。除了连接两列,我还想在这个连接中附加一个单词。所以我尝试使用以下方法来实现
SELECT CONCAT(CONCAT("SRID=4326;POINT(",CONCAT_WS(" ",cast(A.longitude as string),cast(A.latitude as string))),")") as the_geom
FROM test
使用上述语法,我收到以下错误。
**org.apache.hive.service.cli.HivesqlException: Error while compiling statement: Failed: ParseException line 1:13 cannot recognize input near 'CONCAT' '(' 'CONCAT' in expression specification**
我不知道我在上面的语法中做错了什么。有没有其他方法可以实现这一点。
预期结果: SRID=4326;POINT(127.155104 35.8091378)
我尝试了所有使用 concat 和 concat_ws 的方法,但遇到了语法问题。
解决方法
问题是分号,它破坏了查询。尝试用 \073
替换分号,也可以使用双反斜杠 \\;
而且似乎单个 concat 就足够了。
使用 \073
的演示:
with test as (
select 12134.12345 as longitude,12134.12345 as latitude
)
SELECT CONCAT("SRID=4326\073POINT(",CONCAT_WS(" ",cast(A.longitude as string),cast(A.latitude as string)),")"
) as the_geom
FROM test A
结果:
SRID=4326;POINT(12134.12345 12134.12345)