`

SQL中 patindex函数的用法

阅读更多

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

 

 

返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。

pattern字符串在expression表达式里没找就返回0,对所有有效的文本和字符串就是有效的数据类型。

描述一下此函数的具体用法:


1. PATINDEX ( '%pattern%' , expression )

 

'%pattern%'的用法类似于 like '%pattern%'的用法,也就是模糊查找其pattern字符串是否是expression找到,找到并返回其第一次出现的位置。

如:

select patindex('�b%','abcaabbeeabb')

结果5,也就是abb第一次出现的位置。


2.PATINDEX ( '%pattern' , expression )

 

'%pattern' 类似于 like '%pattern'的用法,前面用模糊查找,也就是查找pattern的结束所在expression的位置,也就是从后面匹配起查找。

如:

select patindex('�b','abcaabbeeabb')

返回10,也就是abb在后面第一次出现的位置。

select patindex('�b','abcaabbeeabbr')

返回0,后面的第一个字母r和abb不匹配,所以返回0


3.PATINDEX ( 'pattern%' , expression )

 

'pattern%'类似于 like 'pattern%'也就前面用精确查找,后面模糊查找,也就相当于查询pattern首次出现的位置。

如:

select patindex('abb%','abbcaabbeeabb')

返回1,也就相当于起始值

select patindex('abb%','arbbcaabbeeabb')

返回0,开头找不到就返回0,后面无论有多少都不管。


4.PATINDEX ( 'pattern' , expression )

 

这就相当于精确匹配查找,也就是pattern,expression完全相等。

如:

select patindex('abb','abb')

返回1,完全相等

select patindex('abb','abbr')

返回0,不完全相等


5. patindex('%[pattern]%','ddabcaabbeeabbr'),

   patindex('%[^pattern]%','ddabcaabbeeabbr')

 

在此先说[]的用法,[]是指定某些特殊的字符。[^]除[]之外的字符串,[]这其中的每一个。

如:

Symbol Meaning

LIKE '5[%]' 5%

LIKE '[_]n' _n

LIKE '[a-cdf]' a, b, c, d, or f

LIKE '[-acdf]' -, a, c, d, or f

LIKE '[ [ ]' [

LIKE ']' ]

LIKE 'abc[_]d%' abc_d and abc_de

LIKE 'abc[def]' abcd, abce, and abcf

如:

select patindex('%[d]%','rcrdsddddaadadffdr')

返回4,[]中d在字符串rcrdsddddaadadffdr的第一次出现的位置。

select patindex('%[cd]%','rcrdsdddrdaadadffdr')

返回2,[]中c,d在其中一个的位置,返回最先出现的这个位置,c在此字符串里第一次出现位置是2,而d是4,结果取最先的那个。

select patindex('%[sd]%','rcrdsdddrdaadadffdr')

返回4,[]中c,d在其中一个的位置,返回最先出现的这个位置,s在此字符串里第一次出现位置是5,而d是4,结果取最先的那个。

select patindex('%[^r]%','rrrdsdddrdaadadffdr')

返回4,除[]中的字符串的匹配字符,第一次出现d不在[^r]里,所以就找到第一次这位。

select patindex('%[^rd]%','rrrdsdddrdaadadffdr')

返回5,除[]中的字符串的匹配字符,第一次出现s不在[^rd]里,所以就找到第一次这位。

select patindex('%[^rsd]%','rrrdsdddrdaadadffdr')

返回11,除[]中的字符串的匹配字符,第一次出现a不在[^rsd]里,所以就找到第一次这位。

分享到:
评论

相关推荐

    SQL中 patindex函数的用法详解

    接下来,我们将详细讨论PATINDEX函数的使用方法及其各种情况下的应用。 1. **基本语法**: `PATINDEX ( '%pattern%' , expression )` 这里的`pattern`是你想要查找的字符串模式,`expression`则是包含该模式的...

    SQL Server CHARINDEX和PATINDEX详解

    CHARINDEX 和 PATINDEX 是两个非常实用且强大的函数,用于搜索字符串中的指定模式或子串,并返回该模式或子串在目标字符串中的位置。下面我们将详细探讨这两个函数的用法、特点以及它们之间的区别。 #### 一、...

    SQL中使用正则替换的自定义函数

    本主题将深入探讨如何创建一个使用正则表达式的自定义函数,以便在SQL查询中进行复杂的内容替换。这对于处理包含HTML代码或其他复杂格式的数据尤其有用。 首先,让我们了解一下SQL Server中的标准字符串函数,如`...

    Oracle sql 函数大全 比较常用的一些 函数 整理

    2. PATINDEX():返回字符串中某个指定的子串出现的开始位置,PATINDEX 函数的子串中可以使用通配符。 五、字符串操作函数 字符串操作函数是用于对字符串进行操作的函数。常用的字符串操作函数有: 1. QUOTENAME()...

    SQL_Server函数大全

    SQL Server函数是数据库管理系统中非常重要的组成部分,它们用于处理各种数据类型,特别是字符串。在SQL Server中,函数的使用能够帮助我们执行...掌握这些函数的用法,能够显著提升你在SQL Server中的数据处理能力。

    sql server 提取汉字、数字、英文 函数

    - `WHILE PATINDEX('%[^0-9]%', @S) > 0`: 使用`PATINDEX`函数查找字符串中第一个非数字的位置。如果找到了非数字,则执行循环内的操作。 - `SET @S = STUFF(@S, PATINDEX('%[^0-9]%', @S), 1, '')`: 使用`STUFF`...

    SQLSever 2000常用函数手册

    以上列举了SQL Server 2000中常用的字符串函数及其用法。通过这些函数,可以方便地完成对字符串的各种操作,如格式化、提取、替换等。在实际开发过程中,熟练掌握这些函数的应用是非常重要的。此外,还应注意不同...

    sqlserver2000函数大全.rar

    总结,"sqlserver2000函数大全"涵盖了SQL Server 2000中大量的函数用法,对数据库管理员、开发人员和学习者来说是一份宝贵的参考资料。通过深入学习和实践这些函数,可以有效提升SQL查询的效率和灵活性,更好地管理...

    SQL截取字符串函数

    本文将详细介绍几种常用的SQL截取字符串函数及其应用场景,包括`LEFT`、`RIGHT`、`SUBSTRING`以及一些高级用法如使用`CHARINDEX`、`PATINDEX`、`REPLACE`和`STUFF`等函数来实现更复杂的字符串处理。 #### 一、基本...

    SQL 函数 函数大全.pdf

    根据提供的文件信息,我们可以深入探讨其中提及的各个SQL函数类别及其具体函数的使用方法与应用场景。下面将逐一解析这些函数的细节。 ### 字符转换函数 #### 1. ASCII() - **功能**: 返回字符表达式最左端字符的...

    ORACLE与SQLSERVER函数异同比较

    - **模式匹配**: Oracle中的`INSTR`函数可以用来查找模式的位置,而在SQL Server中则使用`PATINDEX`函数。 - **字符串复制**: `RPAD`函数在Oracle中用于在字符串右侧添加指定数量的字符,在SQL Server中没有直接对应...

    SQL 2005 函数大全及示例

    ### SQL 2005 函数大全及示例解析 SQL Server 2005作为微软推出的数据库管理系统,提供了丰富的内置函数,极大...通过掌握这些函数的使用方法,数据库开发者能够更高效地管理和查询数据,提升应用程序的性能和可靠性。

    sql语句常用函数

    ### SQL语句常用函数详解 #### 一、字符转换函数 ...以上介绍的各种SQL函数在实际应用中非常常见,掌握这些函数的使用方法能够极大地提高查询效率和灵活性。通过灵活运用这些函数,可以轻松实现复杂的字符串处理任务。

    sqlserver常用函数 SQLServer和Oracle常用函数对比.pdf

    - **SQLServer**: 使用`PATINDEX()`函数。 - 示例: `SELECT PATINDEX('%d%q%', 'sdsq') AS Value` - **Oracle**: 使用`REGEXP_INSTR()`函数。 - 示例: `SELECT REGEXP_INSTR('sdsq', '%d%q%', 1, 1, 0, 0) AS ...

    sqlserver2000函数大全

    对于SQL Server 2000的使用者来说,掌握这些函数的用法至关重要,能够提高工作效率,优化数据库操作。通过学习这个压缩包中的内容,你可以深入了解每个函数的工作原理、语法结构以及使用示例,从而更好地驾驭SQL ...

    sql server 提取汉字/数字/字母的方法 demo

    本文将介绍如何使用SQL Server编写函数来实现这些功能,并提供示例代码帮助理解。 #### 一、提取数字的方法 在SQL Server中提取字符串中的数字可以通过创建自定义函数实现。这里我们将通过一个具体的例子来展示这...

    SQL Server中,在“整型数字”和“字符串表示的十六进制数字”之间进行转换的函数

    这些函数可能需要使用字符串操作函数如`SUBSTRING`,`PATINDEX`,`REPLACE`等,以及循环或递归结构来实现。 4. **实际应用** 这些转换在多种场景下都很有用,例如在处理二进制数据、编码解码、数据库存储和检索,...

    在sqlserver2008r2版本中实现正则表达式

    在SQL Server 2008 R2中,虽然标准版并不直接支持正则表达式,但可以通过一些扩展方法和第三方工具来实现正则表达式的功能。这篇文章将详细讲解如何在SQL Server 2008 R2中实现正则表达式处理。 首先,SQL Server ...

Global site tag (gtag.js) - Google Analytics