MsSql2005 CharIndex的用法

 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”中被找到。

  此时,我们再尝试一下CharIndex中的第三个参数【start_location】,如下:

  CHARINDEX('zhang', 'Devil_Zhang')----->7

  CHARINDEX('zhang', 'Devil_Zhang',9)------>0

   【因为设置了被查字符串的起始位置为9,即“ang",所以,返回的是0】

  需要注意的是:

  1、如果 expression1 或 expression2 之一是 Unicode 数据类型(nvarchar 或 nchar)而另一个不是,则将另一个转换为 Unicode 数据类型。CHARINDEX 不能与 textntext 和 image 数据类型一起使用。

  2、如果 expression1 或 expression2 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在 expression1 和 expression2 都为 NULL 时才返回 NULL 值。

  3、如果在 expression2 内找不到 expression1,则 CHARINDEX 返回 0。

  4、返回的开始位置从 1 开始,而非从 0 开始。

  5、查找的字符和被查的字符是不区分大小写的。

  针对下句:

  SELECT CHARINDEX ( 'Test', 'Das ist ein Test'  COLLATE Latin1_General_BIN);
     【CHARINDEX 将根据输入的排序规则执行比较操作。若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入值。】
posted @ 2011-03-11 12:06  Devil_Zhang  阅读(1753)  评论(0编辑  收藏  举报