打通PostgreSql(pgsql)的正则匹配: like, similar to, ~。 以及与 mysql 正则匹配的区别。

Posted 16岁魔法少女

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打通PostgreSql(pgsql)的正则匹配: like, similar to, ~。 以及与 mysql 正则匹配的区别。相关的知识,希望对你有一定的参考价值。

1. like

模糊匹配 like 是最简单的最通用的匹配符, 用法同 mysql

1)  _ : 匹配任意一个字符

2) % : 匹配任意个任意字符

例如 : 要从表aaa中查询 字段bbb 倒数第三位为字符 M 的行, 可以写做

select
    *
from
    aaa
where
    bbb like '%M__'

%代表M之前可以有任意字符(一个字符也没有也可以), M后面跟着的两个下划线_ 代表 M 后面还有两个字符, 那么M就是倒数第三个的字符

注意 : like 是完整匹配, 不需要定界符。 也就是说, 必须要字符串完全匹配你所写的内容, 才会生效。

2.  similar to

similar to 是 pgsql 特有的, 介于正则匹配符~(后文会讲到) 与 模糊匹配 like 之间的符号

1) similar to 支持 like 的 _ 以及 % 这两个符号

2) similar to 也支持 正则匹配的常用操作(见后文)

注意 : similar to 也是完整匹配, 不需要定界符。 也就是说, 必须要字符串完全匹配你所写的内容, 才会生效。

3.TILDE ( ~ ) 运算符

腭化符号 ~ 是 pgsql 特有的代表正则匹配的运算符, 作用相当于 mysql 中的 rlike

1) 不支持模糊匹配的 _ 与 %, 但可以用相应的正则表达式替换, 如 % 可以写作 .*

2) 支持正则表达式(见后文)

3) ~ 代表确定大小写的正则匹配

        ~* 代表忽视大小写的正则匹配

        !~ 代表确定大小写的非正则匹配

        !~* 代表忽视大小写的非正则匹配

注意 : ~ 也是部分匹配, 也就是字符串中有某个部分能匹配到正则规则的时候, 就会生效。 所以如果需要匹配完整字符串, 需要加上定界符 ^ 和 $

4.正则表达式

文末简单列几个常用的正则表达式

1. \\d : 任意数字

2. \\D : 任意不是数字的字符

3. \\w : 任意数字、字母, 或者下划线

4. \\W : 任意不是数字、字母, 或者下划线的字符

5. \\s : 任意空白字符 (空格, tab, 换页)

6. \\S : 任意不是空白字符的字符

7. ^ : 开头定界符

8. $ : 结尾定界符

9. () : 圆括号内的字符串作为一个整体

10. [] : 方括号内的字符串出现任意一个就可以了。 方括号内也可以用 - 来连接连续的字符

        比如 : [abcd] 代表出现abcd中任意一个字符就可以了, [a-d] 起到了与前者一样的作用

11. : 花括号代表前面的数字出现了多少次

        1) n : 代表前面的字符串出现了n次。

                比如 (abc)3 就代表匹配 abcabcabc, [a-d]3 则代表匹配 aaa,abc, adb等等。

        2) n, : 加上一个逗号, 代表前面的字符串至少出现n次

                比如: (abc)2, 可以匹配 abcabc, 也可以匹配 abcabcabc, 也可以匹配abcabcabcabc 等等

        3) n, m : 代表前面的字符串要出现 n 到 m 次

12. “.” : 代表匹配除了换行以外的任意字符 (不需要双引号, 只是为了让大家能够看清这儿有个点)

13. * : 代表前面的字符或者字符串出现任意次, 即 0 到 正无穷次

14. ? : 代表前面的字符串出现 0 次 或者 1 次

15. + : 代表前面的字符串至少出现 1 次, 即出现 1 到正无穷次

参考资料

正则表达式中的*,+,?以及\\w和\\W的区别等常见问题的总结_Miles-的博客-CSDN博客_正则表达式\\w

正则表达式(括号)、[中括号]、大括号的区别小结_pilifeng1的博客-CSDN博客_正则括号用法 

Postgresql 正则表达式_DemonHunter211的博客-CSDN博客_pgsql 正则表达式

pgsql如何使用正则表达式的通配符,如匹配字母,数字_独孤尚良dugushangliang的博客-CSDN博客_pgsql 正则匹配 

postgresql 常用命令

启动
/usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/ > /var/lib/pgsql/9.6/data/log/pg_server.log 2>&1 &
 
l 查看所有数据库
 
d [ pattern ] 该命令将显示每个匹配关系(表、视图、索引、序列)的信息,可以加上 + 查看更多的信息,如 d+
不加任何参数表示查看当前数据库的所有表。
 
d tablename 后面跟一个表名,表示显示这个表的结构定义
 
d indexname 也可以显示索引的信息,如 d 索引名称
 
d * 后面也可以跟通配符如 "*" 或 "?",d x*
 
d+ 将显示比 d 更详细的信息,还会显示任何与表关系的注释,以及表中出现的 OID 
 
dt 只显示匹配的表  
 
di 只显示索引
 
ds 只显示序列
 
dv 只显示视图
 
df 只显示函数
 
iming on或off 显示 SQL 已执行的时间,默认情况下是 off
 
c dbname 切换数据库  
 
dn 列出所有的 schema 
 
du 或 dg 列出所有的数据库用户和角色
 
db 显示所有的表空间,表空间其实是一个目录,放在这个表空间的表,就是把表的数据文件发到这个表空间下。
 
dp 或 z 显示表的权限分配情况
 
encoding 指定客户端的字符编码,如 encoding UTF8; 
 
pset 设置输出的格式,pset border 0 : 表示输出内容无边框。 border 1 :表示边框只在内部。border 2 :内外都有边框
 
x 把表中的每一行的每列数据都拆分为单行展示,与 MySQL 中的 "G" 的功能类似。
 
 
 
echo 用于输出一行信息,通常用于在 .sql 文件中输出一些提示信息。 
 
password 设置密码
 
conninfo 列出当前数据库连接的信息
 
dx 查看数据库中安装的扩展 或 select * from pg_extension;

以上是关于打通PostgreSql(pgsql)的正则匹配: like, similar to, ~。 以及与 mysql 正则匹配的区别。的主要内容,如果未能解决你的问题,请参考以下文章

postgresql 常用命令

Postgresql 正则表达式转

Postgresql查询时不区分大小写

PostgreSQL:列名到数组 PL/pgSQL

PostgreSQL-PL/pgSQL控制结构

使用python登录pgsql,实现监控PostgreSQL