trim BigQuery中字符串的前几个字符MySQL

trim the first few characters of string in BigQuery MySQL

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

name
HDM | kjfsgjfgusgff
GHN | hgfhgfhgsf
GHT | 57fhjsfhjsgfghg

期望的输出是:HDMGHNGHT 我尝试了以下方法:

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

出现错误:Function not found: substring_index

对于 BigQuery - 使用下方

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

如果应用于您问题中的示例数据 - 输出为

尝试 substr:

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

根据数据的形状,您有多种选择。 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

编辑:

谢尔盖的 SUBSTR 解决方案:

SELECT SUBSTR(name, 1, 3)
FROM table