【问题标题】:trim the first few characters of string in BigQuery MySQL修剪 BigQuery MySQL 中字符串的前几个字符
【发布时间】:2021-07-22 23:43:48
【问题描述】:

我需要从 BigQuery 表中的字符串中获取前几个字母。我的数据如下所示:

name
HDM | kjfsgjfgusgff
GHN | hgfhgfhgsf
GHT | 57fhjsfhjsgfghg

所需的输出是:HDMGHNGHT 我尝试了以下方法:

SELECT TRIM(SUBSTRING_INDEX(name, '|', 1) as `new_name` 

遇到错误:Function not found: substring_index

【问题讨论】:

    标签: mysql string google-bigquery substring trim


    【解决方案1】:

    您有多种选择,具体取决于数据的形状。 Mikhail 建议的 TRIM + SPLIT 选项,与您尝试的非常接近

    SELECT TRIM(SPLIT(name, "|")[offset(0)])
    FROM table
    

    LEFT 选项可能是最简单的(仅当您对固定字符长度感兴趣时:

    SELECT LEFT(name,3)
    FROM table
    

    如果您需要更精确的控制,也可以使用正则表达式选项:

    SELECT REGEXP_EXTRACT(name, r"^([A-Z]+)(?:|)")
    FROM table
    

    编辑:

    还有 Sergey 的 SUBSTR 解决方案:

    SELECT SUBSTR(name, 1, 3)
    FROM table
    

    【讨论】:

      【解决方案2】:

      试试substr:

      select substr(name, 1, 3) as new_name from mytable
      

      【讨论】:

        【解决方案3】:

        对于 BigQuery - 在下面使用

        select trim(split(name, '|')[offset(0)])
        from your_table    
        

        如果应用于您问题中的样本数据 - 输出是

        【讨论】:

          猜你喜欢
          • 2015-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-16
          • 2014-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多