sql - 简单的正则表达式过滤掉前后字符
问题描述
我的数据库中有一个字段,其中有一长串用逗号分隔的字符串。以下是几个行示例:
HAB
DHAB,RAB,DAB
HAB,RAB,DAB
RAB,HAB,
RAB,HAB,DAB
我的查询具有以下条件:
WHERE description LIKE '%HAB%'
但它返回具有“DHAB”的第二行。
是否可以使用正则表达式和WHERE
语句来完成,以便我只获得列表中具有“HAB”的条目(一个字符串)而不是具有“DHAB”的条目?
解决方案
您可以使用
WHERE description ~ '(^|,)HAB($|,)'
正则表达式匹配
(^|,)
- 字符串的开头或,
HAB
- 文字子串($|,)
- 字符串结尾或,
请参阅在线正则表达式演示。