必威体育Betway必威体育官网
当前位置:首页 > IT技术

sql 查询字符坐标位置 之PATINDEX()函数详解

时间:2019-10-01 06:41:05来源:IT技术作者:seo实验室小编阅读:88次「手机版」
 

patindex

前言:

sql语句查询中,有时候,我们可以通过like模糊查询来判断是否存在某个数据,但是,当我们要确定某个字符串第一次出现的位置时,like语句查询是无法实现的。但是,可以通过patindex()函数来实现。

1.概念:

patindex是用于返回指定模式开始位置的一个函数,其中,模式是可以包含通配符的字面字符串。开始位置从1开始算起,当知道模式中的字符串存在于表达式中时,会返回第一次出现的位置。如果不存在,返回数字0.

2.格式:

语法格式:PATINDEX ( '%pattern%' , expression )

说明:pattern:是用于检测的字符串,expression是一个表达式,可以是任意有效的数据类型,pattern会用在expression表达式中进行检测,存在就返回第一次出现的位置,不存在就返回0,下标位置从1开始。

3.具体格式:

1).PATINDEX ( '%pattern%' , expression ):指定字符串前后模糊查询:

 代码1:select patindex('%34%','13543452123')

返回结果图:

代码2:select patindex('%36%','13543452123')

返回结果图:

说明:代码1中,指定的字符串34,在表达式中,第一次出现的位置是5,所以返回数字5。代码2中,指定字符串36没有在表达式中,所以返回数字0

2).PATINDEX ( 'pattern%' , expression ):按照开始查询,指定字符串后面模糊查询,开始一样就返回1,否则直接返回数字0

代码1:select PATINDEX('13%','1345203940')

返回结果图:

代码2:select PATINDEX('14%','1231345203940')

返回结果图:

说明:pattern%格式是,指定字符串部分具体查询,%前面指定的字符串具体查询,%后面部分进行模糊查询。

代码1指定开始字符串为13,在表达式中,开始字段为13,所以返回第一次出现的位置。代码2中,指定开始字符串为14,没有在表达式的开始位置,所以返回数字0.

3).PATINDEX ( '%pattern' , expression ):按照结尾查询,指定字符串前面模糊查询,结尾一样就返回结尾位置,否则返回0

代码1:select PATINDEX('%12','123134520394012')

返回结果图:

代码2:select PATINDEX('%15','123134520394012')

返回结果图:

说明:%pattern格式:指定字符串前面模糊查询,指定字符串部分具体查询。既是,%前面模糊查询,%后面的指定字符串要具体查询。代码1中,指定字符串12在表达式结尾位置,所以返回第一次出现的位置14。代码2中,指定字符串15没有在表达式结尾位置,所以返回数字0.

4).PATINDEX ( 'pattern' , expression ):指定字符串和表达式完全相等查询,指定字符串和表达式完全一样就返回1,否则返回数0.

代码1:select PATINDEX('%123','123')

返回结果图:

代码2:select PATINDEX('%123','12345')

返回结果图:

说明:'pattern'格式是和表达式中的值完全相等查询的,既是,只有当指定字符串和表达式的值都一模一样才会返回数字1.否则都会返回数字0.代码1中,指定字符串为123,表达式中的值也是123,指定字符串和表达式的值完全一模一样,所以返回第一次出现的位置1.代码2中,指定字符串为123,而表达式中的值是12345,指定字符串和表达式的值不一样,所以返回数字0.

3.PATINDEX 支持在[]中括号^否定号中查询

[]中括号格式:PATINDEX ( '%[pattern]%' , expression )

^否定号中格式:PATINDEX ( '%[^pattern]%' , expression )

说明:[]是一个特殊的符号,是指[]中任意的一个字符只要在表达式expression中出现,就直接返回其第一次出现的位置。

[^]是一个否定符号,指表达式中,除了[]中指定的字符之外,其他任意字符第一次出现的位置。

1).PATINDEX ( '%[pattern]%' , expression ):指定字符串中,只要任意一个值在表达式中出现,就返回第一次出现的位置。

代码1:select PATINDEX('%[ab]%','weaqbr')

返回结果图:

代码2:select PATINDEX('%[ab]%','wetqyr')

返回结果图:

说明:[]中括号中,只要指定字符串任意一个字符出现在表达式中,就返回第一次出现的字符的位置。如果[]中括号中任意的字符串都没有在表达式中,就直接返回数字0.代码1中,指定的字符串a和b都在表达式中,表达式中a第一次出现的位置是3,所以直接返回a第一次出现的位置3,不在考虑b的位置了。而代码2中,指定字符串a和b都没有在表达式中,所以直接返回数字0.

2).PATINDEX ( '%[^pattern]%' , expression ):表达式中除了指定字符串之外,返回其他任意字符串第一次出现的位置

代码1:select PATINDEX('%[^12]%','1342567')

返回结果图:

大码2:select PATINDEX('%[^12]%','12212211')

返回结果图:

说明:%[^pattern]%:否定符^格式是指,在表达式中,返回除了指定字符串之外的任意字符串中第一次出现的位置。

代码1中,指定字符串为1和2,在表达式中,除了1和2之外,第一次出现的字符是3,位置为2,所以返回第一次出现的位置为数字2。代码2中,指定字符串为1和2,而表达式中的字符串都是1和2,没有其他的字符串存在,所以返回数字0.

相关阅读

C语言中字符数组的初始化与赋值,字符串相关函数!

           C语言中字符数组的初始化与赋值,字符串相关函数! 1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的;所

mysql修改表操作(DDL)

1.修改表名:alter table 表名 rename 新表名; 2.添加表字段: (1)默认加到最后:alter table 表名 add 新字段  类型 (字段完整性约束

MySQL系列-优化之explain执行计划详解

1.id介绍 这个id不是主键的意思,他是用来标识select查询的序列号,包含一组数字,表示查询中执行select子句或者操作表的顺序。 会出

SQL 触发器的作用,好处和坏处

触发器,主要是用来同步更新数据的,举个例子吧: 假设有两个表,tab_1 , tab_2 再假设两个表里都有“人员性别”这个字段 tab_1的数

LocationManager、Geocoder获取当前位置

参考:Android获取当前位置的经纬度 示例: public class MainActivityI extends Activity { private LocationUtils locat

分享到:

栏目导航

推荐阅读

热门阅读