【问题标题】:Big query - Concatenate strings horizontally大查询 - 水平连接字符串
【发布时间】:2015-05-05 07:05:20
【问题描述】:

我有一个数据,其中一列是名字,一列是姓氏。 我尝试通过代码将它们组合成一列:

SELECT GROUP_CONCAT_UNQUOTED(full_name,' ') 
from (Select first_name as check from [DATA]), 
     (select last_name  as check from [DATA])

但它返回一个单行字符串

安娜·亚历克斯·艾玛·肖恩……米勒·史密斯·怀特……

但我想要的实际上是一个类似的列

Anna Miller
Alex Smith
Emma White
...

你能告诉我我应该做些什么不同的事情吗? 谢谢!

【问题讨论】:

    标签: google-bigquery string-concatenation


    【解决方案1】:

    您需要使用CONCAT 和修剪功能

    SELECT CONCAT(rtrim(ltrim(first_name)),' ',rtrim(ltrim(last_name))) AS full_name
    FROM
      (SELECT 'Anna' AS first_name,
              ' Miller ' AS last_name),
    

    【讨论】:

    • 谢谢,它在大多数情况下都有效,但如果 first_name 或 last_name 的值为 null,则返回 null。我尝试使用 string(first_name) 但它保持为空。我希望它会返回,例如Sean null 或 Sean NoName。
    • 你需要加IFNULL(first_name,'null')IFNULL(first_name,'NoName')
    • 另外 SELECT RTRIM(LTRIM(first_name))+' '+RTRIM(LTRIM(last_name)) 也可以工作(+ 而不是 CONCAT)
    【解决方案2】:

    您还可以使用双管道 || 连接运算符来连接字符串 (see here for more info):

    select 
        trim(first_name) || ' ' || trim(last_name)
    from
        ...
    

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 2017-12-15
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 2014-12-07
      相关资源
      最近更新 更多