InStr函数和charindex函数

描述  
  返回某字符串在另一字符串中第一次出现的位置。  
  语法  
  InStr([start,   ]string1,   string2[,   compare])  
  InStr   函数的语法有以下参数:  
   
  参数   描述    
  start   可选。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果   start   包含   Null,则会出现错误。如果已指定   compare,则必须要有   start   参数。    
  string1   必选。接受搜索的字符串表达式。    
  string2   必选。要搜索的字符串表达式。    
  compare   可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,将执行二进制比较。    
   
   
  设置  
  compare   参数可以有以下值:  
  常数   值   描述    
  vbBinaryCompare   0   执行二进制比较。    
  vbTextCompare   1   执行文本比较。    
   
   
  返回值  
  InStr   函数返回以下值:  
  如果   InStr   返回    
  string1   为零长度   0    
  string1   为   Null   Null    
  string2   为零长度   start    
  string2   为   Null   Null    
  string2   没有找到   0    
  在   string1   中找到   string2   找到匹配字符串的位置    
  start   >   Len(string2)   0    
   
   
  说明  
  下面的示例利用   InStr   搜索字符串:    
  Dim   SearchString,   SearchChar,   MyPos  
  SearchString   ="XXpXXpXXPXXP"                         '   要在其中搜索的字符串。  
  SearchChar   =   "P"                                                 '   搜索   "P"。  
   
  '文本比较从第四个字符开始返回   6。  
  MyPos   =   Instr(4,   SearchString,   SearchChar,   1)        
   
  '二进制比较从第1个字符开始返回   9。  
  MyPos   =   Instr(1,   SearchString,   SearchChar,   0)  
   
  '   缺省为二进制比较(最后一个参数省略)。  
  MyPos   =   Instr(SearchString,   SearchChar)         '   返回   9。  
   
  '   二进制比较从第1个字符开始返回   0   (没有找到   "W")。  
  MyPos   =   Instr(1,   SearchString,   "W")                  
   
   
  --------------------------------------------------------------------------------  
     
  注意   InStrB   函数使用包含在字符串中的字节数据,所以   InStrB   返回的不是一个字符串在另一个字符串中第一次出现的字符位置,而是字节位置。

 

 

CHARINDEX
返回字符串中指定表达式的起始位置。 

语法
CHARINDEX ( expression1 , expression2 [ , start_location ] ) 

参数
expression1

一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。

expression2

一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。

start_location

在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

返回类型
int

注释
如果 expression1 或 expression2 之一属于 Unicode 数据类型(nvarchar 或 nchar)而另一个不属于,则将另一个转换为 Unicode 数据类型。

如果 expression1 或 expression2 之一为 NULL 值,则当数据库兼容级别为 70 或更大时,CHARINDEX 返回 NULL 值。当数据库兼容级别为 65 或更小时,CHARINDEX 仅在 expression1 和 expression2 都为 NULL 时返回 NULL 值。 

如果在 expression2 内没有找到 expression1,则 CHARINDEX 返回 0。

示例
第一个代码示例返回序列"wonderful"在 titles 表的 notes 列中开始的位置。第二个示例使用可选的 start_location 参数从 notes 列的第五个字符开始寻找"wonderful"。第三个示例显示了当 expression2 内找不到 expression1 时的结果集。

USE pubs
GO
SELECT CHARINDEX('wonderful', notes)
FROM titles
WHERE title_id = 'TC3218'
GO

-- Use the optional start_location parameter to start searching 
-- for wonderful starting with the fifth character in the notes
-- column.
USE pubs
GO
SELECT CHARINDEX('wonderful', notes, 5)
FROM titles
WHERE title_id = 'TC3218'
GO

下面是第一个查询和第二个查询的结果集:

----------- 
46          

(1 row(s) affected)

USE pubs
GO
SELECT CHARINDEX('wondrous', notes)
FROM titles
WHERE title_id='TC3218'
GO

下面是结果集。

----------- 
0          

(1 row(s) affected) 

你可能感兴趣的:(数据库)