版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/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——著