CHARINDEX(charindex函数)
SQLserver中字符串查找功能patindex和charindex的区别
patindex(pattern,expression) 精确匹配,完全匹配1,不完全匹配0
例如:patindex('aa','aa') 返回1 完全匹配
patindex('aa','aab') 返回0 不完全匹配
patindex(%pattern%,expression)模糊匹配,返回从第几位开始匹配
例如:patindex('%aa%','ssaaa') 返回3 模糊从第三位开始匹配
patindex('%aa','ssddaa') 返回5 模糊从第五位开始匹配
patindex('%aa','ssddaaa') 返回6 模糊从第六位开始匹配
patindex('%aa%','ssddaaa') 返回5 模糊从第五位开始匹配
charindex(pattern,expression)精确匹配,返回第一个满足条件的下标
例如:charindex(aa,aas) 返回1 从第一位开始精确匹配
charindex(aa,saas) 返回2 从第二位开始精确匹配
charindex(aa,saaas) 返回2 从第二位开始精确匹配
charindex(aa,sas) 返回0 没有完全精确匹配的
函数多试试就知道其用法了,多实践sql server中patindexh和charindex函数,都可以在一段字符中搜索字符或字符串。
主要区别在:patindex函数支持使用通配符来进行搜索,charindex不支持通配符。
一、patindex函数
语法格式:patindex ( %pattern% , expression )
pattern:是要搜索的字符串
expression:是被搜索的字符串。
patindex函数返回字符或字符串在另一个字符串或表达式中的起始位置。
patindex函数支持搜索字符串中使用通配符,这也是patindexh和charindex函数主要的区别。
patindex(%bc%,abcd) --返回:2
patindex(ab%,abcd) --返回:1
sql中可以使用的通配符有:
1、%,替代一个或多个字符
2、_,仅替代一个字符
3、[charlist],字符列中的任何单一字符
4、[^charlist]或者[!charlist],不在字符列中的任何单一字符
二、charindex 函数
语法格式:charindex ( expression1 , expression2 [ , start_location ] )
expression1:是在expression2中寻找的字符
start_location:是charindex函数开始在expression2中找expression1的位置
charindex函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如charindex没有找到要找的字符串,那么函数整数0。
charindex(sql, microsoft sql server) --返回:11
charindex(7.0, microsoft sql server 2000) --返回:0
SQL charindex
参数一: 包含要查找的字符序列的表达式。该参数是 ntext 类型或可隐式转换为 nvarchar 数据类型的表达式。
参数二: 通常用于搜索指定序列的列的表达式。该参数是 ntext 类型或可隐式转换为 nvarchar 数据类型的表达式。
参数三: 在 参数二中搜索 参数一 的起始字符位置。如果没有给定该参数、或者给定值为负数或零,那么搜索将会开始于 参数二的起始位置。该参数可以是 tinyint、smallint、int 或 bigint类型值。
charindex函数返回值类型为int 如果返回 -1 则表示在参数二中没有找到参数一