pgsql如何使用正则表达式的通配符,如匹配字母,数字

本文深入探讨了在PgSQL中使用模糊查询的局限性,特别是在使用特定字符集进行匹配时的挑战。文章对比了LIKE与SIMILARTO在模式匹配上的不同,并提供了如何正确使用SIMILARTO进行复杂字符匹配的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.youkuaiyun.com/dugushangliang/article/details/105047395

 

下图来自于https://www.runoob.com/sql/sql-wildcards.html,我们会有下图的认知,由此写出模糊查询的语句。

但查询地址中是否含有几号,则没有成功,经查验,这是因为pgsql的like只支持%和_这两个通配符的特性。匹配字母的[a-zA-Z]和匹配数字的[0-9]则不可用于like。

--起初在pgsql中是这么写的,没有结果,不符合预期
select * from total where addname like '%[0-9]+号_%'

--经查询,pgsql的like只支持%和_这两个通配符

--匹配数字用到的[]不能用于like,而是SIMILAR TO
select * from total where addname similar to '%[0-9]+号_%'

http://postgres.cn/docs/11/functions-matching.html摘录了部分内容 如下:

  • |表示选择(两个候选之一)。

  • *表示重复前面的项零次或更多次。

  • +表示重复前面的项一次或更多次。

  • ?表示重复前面的项零次或一次。

  • {m}表示重复前面的项刚好m次。

  • {m,}表示重复前面的项m次或更多次。

  • {m,n}表示重复前面的项至少m次并且不超过n次。

  • 可以使用圆括号()把多个项组合成一个逻辑项。

  • 一个方括号表达式[...]声明一个字符类,就像 POSIX 正则表达式一样。

注意点号(.)不是SIMILAR TO的一个元字符。

 

独孤尚良dugushangliang——著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值