trim BigQuery中字符串的前几个字符MySQL
trim the first few characters of string in BigQuery MySQL
我需要从 BigQuery table 中的字符串中获取前几个字母。我的数据如下所示:
name
HDM | kjfsgjfgusgff
GHN | hgfhgfhgsf
GHT | 57fhjsfhjsgfghg
期望的输出是:HDM
、GHN
、GHT
我尝试了以下方法:
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
我需要从 BigQuery table 中的字符串中获取前几个字母。我的数据如下所示:
name
HDM | kjfsgjfgusgff
GHN | hgfhgfhgsf
GHT | 57fhjsfhjsgfghg
期望的输出是:HDM
、GHN
、GHT
我尝试了以下方法:
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