首页 > 解决方案 > 简单的正则表达式过滤掉前后字符

问题描述

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

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

我的查询具有以下条件:

WHERE description LIKE '%HAB%'

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

标签: sqlarraysregexpostgresqldatabase-design

解决方案


您可以使用

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

正则表达式匹配

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

请参阅在线正则表达式演示


推荐阅读