BigQuery中提取字符串最后一个指定字符前的内容
解决BigQuery中提取最后一个下划线前文本的问题
方法1:使用REGEXP_REPLACE替换最后一个下划线及后续内容
直接通过正则匹配最后一个下划线及其后面的所有内容,替换为空字符串即可。BigQuery支持这种写法,无需依赖前瞻语法:
SELECT string_column, REGEXP_REPLACE(string_column, r'_[^_]*$', '') AS result FROM your_table;
- 正则说明:
_[^_]*$匹配最后一个下划线(_),加上后面所有非下划线字符([^_]*)直到字符串结尾($),替换为空后就得到最后一个下划线前的内容。
方法2:结合REVERSE与INSTR定位截取
如果不想用正则,也可以通过反转字符串来定位最后一个下划线的位置:
SELECT string_column, REVERSE(SUBSTR(REVERSE(string_column), INSTR(REVERSE(string_column), '_') + 1)) AS result FROM your_table;
- 逻辑说明:
REVERSE(string_column)反转原字符串,把最后一个下划线转为第一个出现的下划线INSTR(...)找到反转后第一个下划线的位置SUBSTR(..., 位置+1)截取反转字符串中第一个下划线之后的部分(对应原字符串最后一个下划线之前内容的反转)- 再次
REVERSE还原为原字符串最后一个下划线前的内容
示例验证
对于输入string_variable和string_variable_two,两种方法都会输出:
stringstring_variable
内容的提问来源于stack exchange,提问作者Lane Perry
相关产品推荐
相关产品推荐

