sql - Regexp_extract 出现 '-q_' 后的所有内容

标签 sql regex

有包含“q_”的字符串,我想提取它后面的所有内容。有些行包含 q_ 的出现,我希望它后面出现的所有内容。该列中的示例值为:

prod-q_cat_trait_cat_social_issue
_prod-q_body_modification_graffiti
event_tickets
dappled_grey
_prod-q_cat_tech_support

我的正则表达式有什么问题,因为我试图删除 q 之后的尾随“_”。

REGEXP_EXTRACT(queue_id, '[^q_]+$')

刚回来

issue

我也尝试过分割方法:

SPLIT(queue_id, 'q_')[OFFSET(2)]

但是这会返回

Array index 2 is out of bounds (overflow)

任何建议。谢谢! (我使用的是 Google Cloud SQL)

最佳答案

使用捕获组,您可以提取第一个之后的所有内容 q_:

REGEXP_EXTRACT(queue_id, 'q_(.*)')

您可以提取最后一个 q_ 之后的所有内容:

REGEXP_EXTRACT(queue_id, '.*q_(.*)')

请参阅regex demo #1regex demo #2 .

在这里,q_ 找到 q_ 的第一次出现,并且 (.*) 将该行的其余部分抓取到第 1 组中,这样是 REGEXP_EXTRACT 返回的值。 .* 尽可能多地匹配除换行符之外的任何 0+ 字符,这就是为什么第二个正则表达式将在最后一次出现 q_ 后开始捕获该行的其余部分>.

关于sql - Regexp_extract 出现 '-q_' 后的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57689592/

相关文章:

SQL 查询 : Which one should i use? 计数 ("columnname") 或计数 (1)

sql - 从大表中删除重复行

sql - 如何设计具有修订历史的数据库?

mysql - 在管道分隔列中查找具有匹配项的 MySQL 数据库行

php - 如何在 php 中匹配水平椭圆 (...)

c# - EF : Incorrect usage of spatial/fulltext/hash index and explicit index order

sql - 左外连接与子查询?

php - preg 匹配重复或增量字符

regex - VBS 正则表达式从字符串中获取下划线

python - 正则表达式 - python 2.6 和 3.3 中的不同输出