使用SQL从字段中的任意位置提取字段中的定界子字符串

时间:2018-08-04 18:28:24

标签: mysql sql oracle

我正在尝试从以下字段中提取以下子字符串,该字段包含下划线分隔的字符串,其中子字符串可能不在每个单元格中的相同位置

a_bsdf_cat123_adsd_esdf
a_cat345_zasd_weaq
cat123213_sdfa_sadfas_23dsafa
z_cat987_cat123_sdfaef

我想提取以字母“ cat”开头的第一个下划线分隔的子字符串。因此,在上面的示例中,我想提取

a_bsdf_cat123_adsd_esdf             -> cat123
a_cat345_zasd_weaq                  -> cat345
cat123213_sdfa_sadfas_23dsafa       -> cat123213
z_cat987_cat123_sdfaef              -> cat987

我知道如何使用substr()和instr()函数提取子字符串,但是当它位于字段中的不同位置时却不知道。怎么办?

我需要从Oracle和MySQL中提取此内容。

1 个答案:

答案 0 :(得分:2)

更新:


同时尝试:

REGEXP_SUBSTR(field, '[^|_]+cat[^_]*');