为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

[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

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
13
获赞与收藏
7

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消