PostgreSQL中SIMILAR TO匹配带圆括号字符串无返回结果如何解决?
你遇到的问题是因为SIMILAR TO运算符中()属于正则元字符,用于标识分组,不会被识别为普通的括号字符,所以你要匹配字面量的(和)时需要对其进行转义。
你可以直接用反斜杠对括号做转义,调整后的SQL如下:
SELECT * FROM table_name WHERE column SIMILAR TO '%(ICL-005\(A\)-1/2|IBL-006\(A\)-1/2)%'
如果担心反斜杠在不同SQL客户端的转义冲突,也可以用ESCAPE子句自定义转义字符:
SELECT * FROM table_name WHERE column SIMILAR TO '%(ICL-005#(A#)-1/2|IBL-006#(A#)-1/2)%' ESCAPE '#'
如果你更习惯标准POSIX正则语法,也可以改用~运算符实现需求,写法更简洁:
SELECT * FROM table_name WHERE column ~ 'ICL-005\(A\)-1/2|IBL-006\(A\)-1/2'
以上三种写法都可以正确匹配到你需要的ICL-005(A)-1/2和IBL-006(A)-1/2两条记录。
内容的提问来源于stack exchange,提问作者nirav kanani
相关产品推荐
相关产品推荐

