模式匹配:

PostgreSQL中提供了三种实现模式匹配的方法:SQL LIKE操作符,更近一些的SIMILAR TO操作符,和POSIX-风格正则表达式。
    1. LIKE:
    string LIKE pattern [ ESCAPE escape-character ]
    string NOT LIKE pattern [ ESCAPE escape-character ]
    每个pattern定义一个字串的集合。如果该string包含在pattern代表的字串集合里,那么LIKE表达式返回真。和我们想象的一样,如果LIKE返回真,那么NOT LIKE表达式返回假,反之亦然。在pattern里的下划线()代表匹配任何单个字符,而一个百分号(%)匹配任何零或更多字符,如:
    ‘abc’ LIKE ‘abc’     true
    ‘abc’ LIKE ‘a%’     true
    ‘abc’ LIKE ‘_b‘    true

    ‘abc’ LIKE ‘c’        false  
    要匹配文本的下划线或者百分号,而不是匹配其它字符,在pattern里相应的字符必须前导转义字符。缺省的转义字符是反斜杠,但是你可以用ESCAPE子句指定一个。要匹配转义字符本身,写两个转义字符。我们也可以通过写成ESCAPE ”的方式有效地关闭转义机制,此时,我们就不能关闭下划线和百分号的特殊含义了。
    关键字ILIKE可以用于替换LIKE,令该匹配就当前的区域设置是大小写无关的。这个特性不是SQL标准,是PostgreSQL的扩展。操作符等效于LIKE, 而*对应ILIKE。还有!!*操作符分别代表NOT LIKENOT ILIKE。所有这些操作符都是PostgreSQL特有的。

2. SIMILAR TO正则表达式:
    SIMILAR TO根据模式是否匹配给定的字符串而返回真或者假。
    string SIMILAR TO pattern [ESCAPE escape-character]
    string NOT SIMILAR TO pattern [ESCAPE escape-character]
    它和LIKE非常类似,支持LIKE的通配符(‘_’‘%’)且保持其原意。除此之外,SIMILAR TO还支持一些自己独有的元字符,如:    
    1). | 标识选择(两个候选之一)。
    2). * 表示重复前面的项零次或更多次。
    3). + 表示重复前面的项一次或更多次。
    4). 可以使用圆括弧()把项组合成一个逻辑项。
    5). 一个方括弧表达式[…]声明一个字符表,就像POSIX正则表达式一样。
    见如下示例:
    ‘abc’ SIMILAR TO ‘abc’           true
    ‘abc’ SIMILAR TO ‘a’              false
    ‘abc’ SIMILAR TO ‘%(b|d)%’  true
    ‘abc’ SIMILAR TO ‘(b|c)%’     false
    带三个参数的substring,substring(string from pattern for escape-character),提供了一个从字串中抽取一个匹配SQL正则表达式模式的子字串的函数。和SIMILAR TO一样,声明的模式必须匹配整个数据串,否则函数失效并返回NULL。为了标识在成功的时候应该返回的模式部分,模式必须出现后跟双引号(“)的两个转义字符。匹配这两个标记之间的模式的字串将被返回,如:
    MyTest=# SELECT substring(‘foobar’ from ‘%#”o_b#”%’ FOR ‘#’); –这里#是转义符,双引号内的模式是返回部分。
     substring
    ———–
     oob
    (1 row)
    MyTest=# SELECT substring(‘foobar’ from ‘#”o_b#”%’ FOR ‘#’);  –foobar不能完全匹配后面的模式,因此返回NULL。
     substring
    ———–

(1 row)

转载自http://www.cnblogs.com/stephen-liu74/archive/2012/05/04/2294643.html

Postgresql模式匹配相关推荐

  1. php正则匹配js中变量_Postgresql 中的 正则表达式 模式匹配

    参考链接: PostgreSQL 模式匹配​www.yiibai.com 1. like string LIKE pattern [ESCAPE escape-character] string NO ...

  2. PostgreSQL学习手册(五) 函数和操作符

    PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:     常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:     下面是Po ...

  3. PostgreSQL学习笔记8之索引

    一.索引的类型: PostgreSQL提供了多 种索引类型:B-Tree.Hash.GiST和GIN,由于它们使用了不同的算法,因此每种索引类型都有其适合的查询类型,缺省时,CREATE INDEX命 ...

  4. PostgreSQL学习笔记6之函数和操作符二

    六.模式匹配: PostgreSQL中提供了三种实现模式匹配的方法:SQL LIKE操作符,更近一些的SIMILAR TO操作符,和POSIX-风格正则表达式.     1. LIKE:     st ...

  5. postgresql两个列模糊比较_数据分析之SQL优化系列(二)---PostgreSQL 的索引

    参考<PostgreSQL11.2-中文手册> 下面这个链接,讲的通俗易懂,可以看看. 数据分析师不得不知道的SQL优化 - 鑫获 - 博客园​www.cnblogs.com 索引是提高数 ...

  6. 项目知识学习篇———PostgreSQL数据库

    PostgreSQL学习手册(数据表) http://www.cnblogs.com/stephen-liu74/archive/2011/12/16/2290803.html 一.表的定义 二.系统 ...

  7. PostgreSQL“ DESCRIBE TABLE”

    如何在PostgreSQL中执行等效于Oracle DESCRIBE TABLE的命令(使用psql命令)? #1楼 DESCRIBE TABLE的psql等效项是\\d table . 有关更多详细 ...

  8. postgresql 分词_PostgreSQL全文检索使用

    1. Psql 安装 (CentOS-7.x) 采用yum安装psql是最简洁高效的 # 更新一下yum yum update -y # 直接安装 yum install postgresql-ser ...

  9. PostgreSQL索引(一)

    索引的作用:帮你快速的查询数据 索引的缺点: 你如果把这个东西设置为索引,那么就意味着你的这个表的数据的增删改效率都会变低 索引需要占空间 对于索引数据的每个操作,无论是插入.删除还是更新表行,该表的 ...

最新文章

  1. Linux中和文件相关的操作
  2. jQuery 使用 jQuery UI 部件工厂编写带状态的插件(翻译)
  3. 路由器上不了网?PPPoE协议了解一下
  4. iOS开发笔记[18/50]:在Mac OS X Lion系统中访问~/Library目录都需要点技巧
  5. 使用Keras和TensorFlow构建深度自动编码器
  6. linux上soul网关开通,soul 网关入门篇(一):搭建篇
  7. python学习模型_python学习笔记(IO模型)
  8. 【带权并查集 —— 是否说谎】Parity game【POJ 1733】
  9. java sqlserver 图书馆管理系统_基于JAVA+SQLServer的图书馆管理系统.doc
  10. 使用pandas的dataframe清理excel里面空值
  11. c语言数字黑洞123问题,求助:数字黑洞效率问题
  12. 来了超火爆的Java游戏羊了个羊_java开发游戏项目
  13. Eclipse中mvn install 报错error in opening zip file
  14. 无尽的任务1-仿CNZZ的流量统计,完成80%(更新1次)
  15. 游里工夫独造微一一小平邦彦传
  16. python画误差棒_Python数据可视化-误差棒图errorbar
  17. pinMode()函数的三种模式
  18. 纯属意外(FLASH歌曲)
  19. 《Scala入坑笔记》一、Scala简介
  20. SRTP RFC 3711

热门文章

  1. 如何不冒昧的问妹子年龄又能清楚的知道她多大呢?Python来告诉你。
  2. 域名被停用之后还能恢复吗?
  3. 【C语言习题】有3个学生,上4门课程,要求输入全部学生的各门课成绩,并分别求出每门课的平均成绩(用二维数组编程)
  4. 马云的创业故事及他人生中的摆渡人-阿里香港上市(八)
  5. 关于SpringAop中@within的使用踩坑指南
  6. 雷达原理笔记之恒虚警概率检测
  7. 红米ac2100有ipv6吗_【1222多功能版OpenWrt】红米小米AC2100|IPV6|酸奶|SmartDNS|多拨|猫咪,附教程...
  8. Python(1)字符串
  9. 全球首款异构融合类脑芯片,登上了 Nature 封面
  10. 英语的加减乘除怎么计算机,英语口语:加减乘除怎么说?