如何在 Teradata sql 中选择最后一个下划线后的字符串

How to pick the string after last underscore in Teradata sql

我需要选择 Teradata sql 中 string 列中最后一个下划线之后出现的部分。如果字符串为空,则它必须 return 为空。字符串可以有多个下划线。

input             output
abc_def_ghi         ghi 
ab_cd_ef_gh_ij      ij 
ab_cd               cd 
ab_11_22            22

如何写入正则表达式以捕获此类字符串列的末尾部分?

instr可以向后查找,instr(col, '_', -1)找到最后一个下划线:

substr(col, instr(col, '_', -1) +1)

或者正则表达式,它搜索最后一个下划线和字符串结尾之间的字符:

regexp_substr(col,'[^_]*$')

如果没有下划线,这两种解决方案都会 return 完整的字符串。

如果将 RegEx 更改为 '_[^_]*$',如果没有下划线,则 return 为 NULL。