patindex(patindex db2)

张工 2022-05-19 19:20:06 阅读:38
  

SQLserver中字符串查找功能patindex和charindex的区别

  Charindex和patindex函数通常用于在一段字符中搜索字符或字符串。如果被搜索的字符中包含要搜索的字符,这两个函数返回一个非零整数,该整数是被搜索字符在被搜索字符中的起始位数。Patindex函数支持使用通配符进行搜索,但charindex不支持。接下来,我们来逐一分析这两个功能。如何使用charindex函数charindex函数返回一个字符或字符串在另一个字符串中的起始位置。Charindex函数调用如下:charindex (expression1,expression2 [,start_location]) Expression1是expression2中要查找的字符,start_location是charindex函数在expression2中开始查找expression1的位置。Charindex函数返回一个整数,返回的整数是搜索到的字符串之一.charindex和patindex函数通常用于在一段字符中搜索字符或字符串。如果被搜索的字符中包含要搜索的字符,这两个函数返回一个非零整数,该整数是被搜索字符在被搜索字符中的起始位数。Patindex函数支持使用通配符进行搜索,但charindex不支持。接下来,我们来逐一分析这两个功能。如何使用charindex函数charindex函数返回一个字符或字符串在另一个字符串中的起始位置。Charindex函数调用如下:charindex (expression1,expression2 [,start_location]) Expression1是expression2中要查找的字符,start_location是charindex函数在expression2中开始查找expression1的位置。Charindex函数返回一个整数,该整数是被搜索字符串在被搜索字符串中的位置。如果charindex没有找到你要找的字符串,那么函数integer“0”。我们来看看下面这个函数命令执行的结果:charindex (sql,microsoft sql server)这个函数命令会返回“microsoft sql server”中“sql”的起始位置。在此示例中,charindex函数将返回“Microsoft SQL Server”中“s”的位置11。接下来我们来看看这个charindex命令:charindex (7.0,微软sql server 2000)。在此示例中,charindex返回零,因为在“Microsoft SQL Server”中找不到字符串“7.0”。接下来举两个例子来看如何使用charindex函数解决实际的t-sql问题。在第一个示例中,假设您希望在northwind数据库的customer表的前五行中显示contact列的姓氏。这是前五行数据联系人姓名-玛利亚安德斯安娜特鲁希略安东尼奥莫雷诺托马斯哈代克里斯蒂娜贝里隆德您可以看到,customname包含客户的名和姓,用空格隔开。我使用charindx函数来确定两个名字之间空格的位置。用这个方法,我们可以分析contactname列的空白位置,这样就可以只显示这个列的姓氏部分。这是显示northwind的客户表的前五行的姓氏的记录!从northwind.dbo.customers中选择前5个子串(联系人姓名,charindex(,联系人姓名)1,len(联系人姓名))作为[姓氏]以下是该命令的输出结果。名字――我在charindex函数返回的整数上加1,这样姓氏就不会以空格开头。在第二个示例中,假设您想要计算某个字段包含特定字符的任何记录的数量。Charindex函数可以方便的解决你的问题。

  计算northwind.dbo.customer表的addresses字段中包含单词road或其缩写rd的记录数,选择如下语句:select count(*)from north wind . dbo . customers其中charindex (rd,Address) 0或charindex (road,address) 1如何使用patindex函数patindex函数返回另一个字符串或表达式中某个字符或字符串的起始位置。patindex函数支持在搜索字符串中使用通配符,这使得patindex函数对于更改搜索字符串很有价值。patindex函数的命令如下:patindex (%pattern%,expression) p

attern是您要搜索的字符串,expression是被搜索的字符串。一般情况下expression是个表中的一个字段,pattern的前后需要用“%”标记,除非您搜索的字符串在被收缩的字符串的最前面或最后面。和charindex函数相同,patindex函数返回搜索字符串在被搜索字符串中的起始位置。假如有这样一个patindex函数:patindex(%bc%,abcd)这个patindex函数返回的结果是2,这和charindex函数相同。这里的%标记告诉patindex函数去找字符串“bc”,不管被搜索的字符串中在“bc”的前后有多少字符!假如您想知道被搜索字符串是否由特定的字符串开始,您能够省去前面的%标记。patinded函数就要这样写:patindex(ab%,abcd)这个命令执行的结果返回1,表示搜索的字符串“ab”在被搜索的字符串中“abcd”被找到。使用通配符能够编辑比我以上举得简单例子复杂得多的搜索字符串。假如说您要确定一个字符串是否包含字母a和z,更有任何数字,这个parindex函数命令可能像这样:patindex(%[a,z,0-9]%[a,z,0-9]%[a,z,0-9]%,xyzabc123)注意在上面这个例子中的搜索字符部分使用了很多的通陪符。察看sql server联机丛书能够获得更多关于通佩符的信息。接下来,我们用两个例子来看patindex和select怎么联合起来使用。假设您想要找出northwind.dbo.categories表中description字段中是包含单词“bread”或“bread”的任何记录,那么选择语句就可能是这样:select description from northwind.dbo.categorieswhere patindex(%[b,b]read%,description) > 0这里我用通配符来确定大写和小写的“b”。我在notthwind数据库中执行这个脚本后,得到下面的结果:description--------------------------------------------------------desserts, candies, and sweet breadsbreads, crackers, pasta, and cereal这是再用另外一个额外的通配符来查找一些记录的例子。这个例子是怎样选出上面的查询结果中,description字段的第二子字母不是“e”的纪录。select description from northwind.dbo.categorieswhere patindex(%[b,b]read%,description) > 0and patindex(_[^e]%,description) = 1通过在条件语句中增加一个使用^通配符的patindex函数,我们能够过滤掉“dessert, candies, and sweet breads”这条记录。上面的查询结果只有一条记录。description--------------------------------------------------------breads, crackers, pasta, and cereal总结您现在能够发现charindex和patindex搜索字符串时的区分了吧。patindex函数支持使用通配符,能够用在很多有变化的查找中。而charindex不能够。根据您自己不同的情况,这两个函数对您在sql server中的字符串的搜索、控制、分析很有帮助。

SQL 我用patindex函数得到了一列数值。如何用变量判断这列数值是否>0

  需要用变量吗?直接判断不行吗?where parindex(xxx)>01> SELECT

  2>PATINDEX('%come%go%', 'easy come, easy go, so easy!

二维码