sql - 简单的正则表达式来过滤掉前缀和后缀字符

标签 sql arrays regex postgresql database-design

我的数据库中有一个字段,其中有一长串用逗号分隔的字符串。以下是几行示例:

HAB
DHAB,RAB,DAB
HAB,RAB,DAB
RAB,HAB, 
RAB,HAB,DAB

我的查询条件如下:

WHERE description LIKE '%HAB%'

但是它返回第二行有'DHAB'。
是否可以使用带有 WHERE 语句的正则表达式来完成,以便我只获得列表中包含“HAB”的条目(一个字符串)而不是包含“DHAB”的条目?

最佳答案

你可以使用

WHERE description ~ '(^|,)HAB($|,)'

正则表达式匹配

  • (^|,) - 字符串或 ,
  • 的开头
  • HAB - 文字子串
  • ($|,) - 字符串结尾或 ,

参见 online regex demo .

关于sql - 简单的正则表达式来过滤掉前缀和后缀字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287634/

相关文章:

c++ - QRegExp 和 QSyntaxHighlighter 的双引号文本

mysql - 将固定和可变关键字的组合移动到 mysql 中的字符串末尾

sql - 计算树中值的总和(递归查询)

c++ - 为什么我可以使用大缓冲区作为 vector ,但不能在 Windows 上使用 new?

python - 请指出我在此数据结构实现中的错误

php - 正则表达式替换冒号和分号之间的冒号

regex - gsub 速度与图案长度

sql - 如何在 SQL 中生成数字列表,因为它是一个理解列表?

c# - distinct 和 startswith 在同一个 linq 查询中

javascript - 如何格式化数组中的元素?