使用 ~
运算符,很容易找到表中列与给定正则表达式模式匹配的所有行:
SELECT description from book where description ~ 'hell?o'
matches lines containing hello or helo
我想在每次出现的模式周围选择一段文本,而不是描述,所以如果一行包含
description = "aaaheloaaabbbhellobbbcccheloccc"
我想要 3 行作为输出:
"aaaheloaaa"
"bbbhellobbb"
"cccheloccc"
我称之为“类似 grep”的查询,因为它可以显示找到匹配项的列的摘录。
最佳答案
尝试这样的事情:
SELECT
regexp_matches(description,'(.{0,3})('||'hell?o'||')(.{0,3})','g')
FROM
book
WHERE description ~ 'hell?o'
如果没有 WHERE
子句,您将在没有匹配正则表达式的行中得到 null
。
关于regex - 类似 grep 的 postgres 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845222/