MsSql2005 CharIndex的用法
时间:2011-03-11 来源:Devil_Zhang
CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。CHARINDEX函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。
CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如CHARINDEX没有找到要找的字符串,那么函数整数“0”。让我们看看下面的函数命令执行的结果:
CHARINDEX('Zhang', 'Devil_Zhang')
这个函数命令将返回在“Devil_Zhangr”中“Zhang”的起始位置,在这个例子中,CHARINDEX函数将返回“Z”在“Devil_Zhang”中的位置7。
接下来,我们看这个CHARINDEX命令:
CHARINDEX('zhangsns', 'Devil_Zhang')
在这个例子中,CHARINDEX返回0,因为字符串“zhangsns” 不能在“Devil_Zhang”中被找到。
需要注意的是:
1、如果 expression1 或 expression2 之一是 Unicode 数据类型(nvarchar 或 nchar)而另一个不是,则将另一个转换为 Unicode 数据类型。CHARINDEX 不能与 text、ntext 和 image 数据类型一起使用。
2、如果 expression1 或 expression2 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在 expression1 和 expression2 都为 NULL 时才返回 NULL 值。
3、如果在 expression2 内找不到 expression1,则 CHARINDEX 返回 0。
4、返回的开始位置从 1 开始,而非从 0 开始。
针对下句:
SELECT CHARINDEX ( 'Test', 'Das ist ein Test' COLLATE Latin1_General_BIN);
【CHARINDEX 将根据输入的排序规则执行比较操作。若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入值。】