很多客户在SQL SERVER开发中,需要判断字符串中是否包含某字符,在asp中常见的是instr(字符串,字符)>0来判断位置,在php中则使用strpos(字符串,字符)>0来判断包含,那么在sql server中使用什么来判断呢?万维景盛工程师给广大用户分享一下:
mssql的sql查询语句是无法执行instr函数的,instr适用于access数据库。
mssql的sql查询语句用CHARINDEX(str1 ,str2 [开始搜索的位置,可以不写]) 代替 instr。
Access中用:
1 | instr( "bcad " , "a " ) |
SQL Server中用:
1 2 3 | select charindex( 'a ' , 'bcad ' ) select charindex( 'c ' , 'abcd ' ) --在abcd中查出c的位置,结果为3 select charindex( 'c ' , 'abcd ' ,2) --在abcd中从第2个字符开始查出c的位置,结果为2 |
在SQL中有两个函数可以实现:
1.CHARINDEX 返回字符串中指定表达式的起始位置。
CHARINDEX ( 搜索字符串,被搜索字符串 [ ,搜索开始位置] )
如果搜索开始位置省略,将从被搜索字符串的第一个位置开始,否则从指定的位置开始。
2.PATINDEX 返回指定表达式中某模式第一次出现的起始位置;
PATINDEX ( '%搜索字符串% ' , 被搜索字符串)
此函数的功能与CHARINDEX基本相同,不同之处在于此函数在搜索时可以采用通配符的方式进行搜索,详细操作方法可以参考SQL的联机帮助。
3.注意:两个函数搜索时,搜索字符串不区分大小写。