继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

postgreSql:判断a 是否 在 a,ab,c中,且 a只匹配a, 匹配ab的话不算

一念征途
关注TA
已关注
手记 11
粉丝 13
获赞 7

[TOC]

今天分享下几个postgreSql的函数<br>
相关主题: 判断a 是否 在 a,ab,c中,且 a只匹配a, 匹配ab的话不算

1,like 一般和 % 用于模糊查询

    select 'a,ab,c'  like '%a%'

结果为:true ,正常

    select 'ab,c'  like '%a%'

结果也为:true ,此次a匹配的是ab上的a,这时就需要注意下<br>
如果两边都加上逗号,就可以了

    select ',a,ab,c,'  like '%,a,%'

结果为:true

    select ',ab,c,'  like '%,a,%'

结果为:false

2,position 函数,返回位置,找不到返回0

select  position('a' in 'a,ab,c')

返回结果:1
同样,这个函数也和like 有同样的问题,也可以用两边都加逗号的方法解决

同时,由于position返回的是下标位置,所以可以用来固定排序,
例如

select 
        *
from   表名
order by   position( 列名 in 'a,ab,c')  asc

3,any(regexp_split_to_array('a,b,c',',')) <br>
其实,这是2个函数,<br>
any() 里面是放数组,用于结果中的某个值,<br>
regexp_split_to_array 是把字符串切分成数组<br>
regexp_split_to_array('a,b,c',',')是把a,b,c以逗号为分割符分割成数组

SELECT  'a' = ANY ( regexp_split_to_array( 'a,b,c', ',' ) )

运行结果为:true

SELECT  'a' = ANY ( regexp_split_to_array( 'ab,c', ',' ) )

运行结果为:false
sql的意思 就是 分割成数组后,再用 any 进行判断该数组是否包含对应的a

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP