如何在%ilike%中同时匹配含空格与不含空格的字符串
如何用单个表达式匹配含/不含空格的目标字符串
我有两个字符串:"this_is_a string" 和 "this_is_astring",希望通过 ILIKE 同时匹配这两种情况。已知单独匹配含空格的表达式为:
column_name ILIKE 'this_is_a string'
单独匹配不含空格的表达式为:
column_name ILIKE 'this_is_astring'
想把两者合并成一个表达式同时检测两种情况,比如尝试过类似 ILIKE 'this_is_a[\s-'']string' 的写法,但无法生效。
可行解决方案
PostgreSQL 的 ILIKE 基于 SQL 标准通配符(% 匹配任意长度字符、_ 匹配单个字符),不支持正则表达式的字符类语法,因此有两种靠谱的实现方式:
- ILIKE 结合 OR 逻辑
直接将两个匹配条件用OR连接,精准匹配两种情况:
column_name ILIKE 'this_is_a string' OR column_name ILIKE 'this_is_astring'
- 使用正则匹配操作符 ~*
如果偏好正则风格的简洁写法,可以用 PostgreSQL 提供的不区分大小写正则匹配操作符~*,通过\s?匹配「0个或1个空白字符」:
column_name ~* 'this_is_a\s?string'
这个表达式会同时命中带空格和不带空格的目标字符串,完全符合需求。
内容的提问来源于stack exchange,提问作者GitZine
相关产品推荐
相关产品推荐

