如何将两个带有附加词的字符串连接到配置单元中的列值

fykwrbwg  于 2021-07-13  发布在  Hadoop
关注(0)|答案(1)|浏览(399)

我正在尝试用concat和concat\u ws函数concat两列。除了包含两列,我还想在这个包含后面加一个词。所以我试着用下面的方法来实现

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,但都遇到了语法问题。

d7v8vwbk

d7v8vwbk1#

问题是分号,它打断了查询。尝试将分号替换为 \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)

相关问题