PostgreSQL模糊查询, postgres特殊符号模糊查询

本文介绍了在WEB项目中进行模糊搜索时可能遇到的问题,如使用LIKE或~*操作符时,关键字包含特殊符号导致的错误。为了解决这个问题,提出了一种解决方案:通过使用regexp_replace函数和ILIKE操作符,确保即使关键字包含特殊符号也能正常进行模糊查询。这种方法经过测试,能有效避免因特殊符号引发的查询错误。
摘要由CSDN通过智能技术生成

在做WEB项目时, 经常会需要使用搜索功能, 而且大多数时候是需要模糊搜索, 以下将对模糊搜索进行介绍:

通常我们是这样写的:

SELECT * FROM 表名 WHERE 字段 LIKE ('%' || '关键字' || '%')

或者这样写:

SELECT * FROM 表名 WHERE 字段 ~* '关键字'

但是这两种是有风险的!

可能出现的问题:

invalid regular expression: quantifier operand invalid

出现原因: 使用 ~* 符号进行模糊查询时, 关键字使用 *

invalid regular expression: invalid escape \ sequence``

出现原因: 使用 ~* 符号进行模糊查询时, 关键字使用 \

等等各种因为特殊符号产生的问题, 不一一举例了
类似的, 使用特殊符号作为关键字时, 就会出现类似的报错问题.
所以, 既是模糊搜索,搜索的内容又允许带有特殊符号的时候, 就必须对此情况进行处理!

解决方案:
同事们经过摸索, 研究出来的超厉害的解决方案:

SELECT * FROM 表名 WHERE 字段 ILIKE regexp_replace(concat('%','关键字','%'),'\\','\\\','g')

经过测试, 你在关键字内输入任何特殊符号, 都能正常的进行查询!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值