前言:

在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.

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

  1. sql server charindex函数和patindex函数详解(转)

    charindex和patindex函数常常用来在一段字符中搜索字符或字符串.假如被搜索的字符中包含有要搜索的字符,那么这两个函数返回一个非零的整数,这个整数是要搜索的字符在被搜索的字符中的开始位数. ...

  2. SQL中常用的字符串CHARINDEX函数和PATINDEX函数详解!

    今天整理了些日常可能经常遇到的一些处理字符串的函数,有些可能在写SQL时突然间想不到如何使用,今天就给大家总结两个函数的应用方法,以备不时之需!记得点赞收藏! CHARINDEX(expression ...

  3. c语言中用来指示文件缓冲区中具体读写位置,C语言文件读写操作中缓冲区问题和setbuf函数详解...

    清除和设置文件缓冲区 (1).清除文件缓冲区函数: int fflush(FILE *stream); int flushall(); fflush()函数将清除由stream指向的文件缓冲区里的内容 ...

  4. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

  5. cv2.fitEllipse函数详解:ellipse参数并根据参数计算出椭圆焦点坐标

    cv2.fitEllipse函数详解:ellipse参数并根据参数计算出椭圆焦点坐标 最近因为用到了这个函数,所以就趁着这个机会,好好顺顺,做下记录. ellipse = cv2.fitEllipse ...

  6. MaxCompute SQL函数详解 ODPS SQL函数详解---之日期相关函数

    MaxCompute SQL函数详解 ODPS SQL函数详解 日期函数 to_date函数 返回类型:datetime 语法:to_date(类型 参数1,类型 参数2);to_date(strin ...

  7. mysql coalesce函数用法,SQL Server COALESCE函数详解及实例

    SQL Server COALESCE函数详解 很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止 ...

  8. MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数

    MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数 MaxCompute/ODPS SQL常用数学运算相关函数 ABS函数-计算绝对值 sql:select A ...

  9. python内置函数教程_Python内置函数详解

    此文参考python文档,然后结合自己的理解,写下来,一方面方便自己,让自己好好学习,顺便回忆回忆:另一方面,让喜欢的盆友也参考一下. 经查询,3.6版本总共有68个内置函数,主要分类如下: 数学运算 ...

最新文章

  1. 无线网络未来十年十大产业趋势
  2. Mac svn使用学习-2-服务端
  3. 新的起点,新的生活!加油!
  4. Tool之Git:Git的简介、安装、使用方法之详细攻略
  5. c 怎么连接mysql博客_C连接MySql数据库
  6. CSS布局解决方案(终结版)
  7. mysql双主双从_mysql双主双从
  8. ios7自定义返回按钮后,右滑返回功能失效解决方法
  9. 免费的json api接口(音乐、物流、地图、视频)
  10. Java中new一个对象的步骤:
  11. python之小坑:IndentationError: expected an indented block
  12. 200个英语常用词根词缀
  13. 2022在线横幅广告_店标_LOGO制作系统最新源码
  14. 阿里大数据之路:数据模型篇大总结(收藏)
  15. java阿波罗入门介绍_十分钟入门Apollo
  16. 计算机网络数据通信部分之网络层ARP报文分析
  17. I2C 专题(一)I2C 简介
  18. python中wxpy的应用
  19. 计算机信息检索在医学中的应用,探索医学文献检索在医学期刊编辑中的重要性及应用...
  20. ucla计算机科学和数学专业,加州大学(UCLA)数学统计专业解析

热门文章

  1. PowerBI笔记:字段不自动求和
  2. ubuntu 核显输出 独显计算
  3. linux操作系统定制的目的是,Linux操作系统在定制PMP DM320的应用解析
  4. b站服务器崩溃大会员自动续费,骚操作!B站崩了补偿1天大会员会自动续费 官方回应:全额退款...
  5. 五个金念什么_两个“金”字合在一起读什么(图)
  6. 华为nova6se支持鸿蒙系统吗,华为nova6se如何打开深色模式 不止一种开启方法
  7. Django 中间件详解
  8. Java 可变参数传递
  9. 中/美/欧 男女鞋码对照表
  10. 计算机音乐数字乐谱梦中的婚礼,梦中的婚礼右手数字简谱