从每个字符串中最后一个下划线之后的字符串中获取所有内容



我正试图从大查询中MOB_之后的最后一个下划线之后的字符串列表中提取所有内容。

参见以下示例:

字符串:

Topshop_AW19_Pro_MOB_competitors(mid price point)custom_affinity

所需输出:

competitors(mid price point)custom_affinity

这里有一个可能的解决方案:

SELECT SUBSTRING(your_field, LOCATE('MOB_',your_field)+4)
FROM your_table;

或使用regexp

SELECT REGEXP_SUBSTR(your_field,'(?<=MOB_).*$') 
FROM your_table

使用oracle:编辑

SELECT substr(regexp_substr(your_field,'MOB_(.*)'),5) "result" FROM your_table;

如果您不想使用substrhttp://sqlfiddle.com/#!2021年4月20日:

SELECT regexp_substr(your_field,'MOB_(.*)', 1, 1, NULL, 1) "result" FROM your_table;

使用oracle编辑2:在此处查看更多示例http://sqlfiddle.com/#!2021年4月31日一个带有regexp_replace,另一个带有instr(=在oracle中查找(。

这似乎很直接:

RIGHT(stuff, RIGHT_FIND(stuff, 'MOB_'))

有趣的是,文档似乎有一些错误:

https://cloud.google.com/dataprep/docs/html/RIGHT-Function_57344732

https://cloud.google.com/dataprep/docs/html/RIGHTFIND-Function_118228807

最新更新