1. SUBSTRING ( expression ,start , length ) 

expression

是字符串、二进制字符串、文本、图像、列或包含列的表达式。不要使用包含聚合函数的表达式。

start

指定子字符串开始位置的整数。start 可以为 bigint 类型。

length

一个正整数,指定要返回的 expression 的字符数或字节数。如果 length 为负,则会返回错误。length 可以是 bigint 类型。

以下示例说明如何只返回字符串的一部分。该查询在一列中返回 Contact 表中的姓氏,在另一列中只返回名字首字母。

 

 

 
  
  1. USE AdventureWorks;  
  2. GO  
  3. SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial  
  4. FROM Person.Contact  
  5. WHERE LastName like 'Barl%' 
  6. ORDER BY LastName  

结果集如下:

 
  
  1. LastName   Initial  
  2. ---------------------------------        -------  
  3. Barley     R  
  4. Barlow     B  
  5.  
  6. (2 row(s) affected)  
  7.    

以下示例说明如何显示字符串常量 abcdef 中的第二个、第三个和第四个字符。

 

 
  
  1. SELECT x = SUBSTRING('abcdef', 2, 3) 

下面是结果集: 

 

 
      
  1. x  
  2. ----------  
  3. bcd  
  4. (1 row(s) affected) 

对 text、ntext 和 p_w_picpath 数据使用 SUBSTRING

以下示例说明如何返回 pubs 数据库的 pub_info 表内每个 text 和 p_w_picpath 数据列的前 200 个字符。text 数据以 varchar 的形式返回,p_w_picpath 数据以 varbinary 的形式返回。

 

 
      
  1. USE pubs  
  2. SELECT pub_id, SUBSTRING(logo, 1, 10) AS logo,   
  3.    SUBSTRING(pr_info, 1, 10) AS pr_info  
  4. FROM pub_info  
  5. WHERE pub_id = '1756' 
  6. 下面是结果集:   
  7. 复制代码   
  8. pub_id logo    pr_info      
  9. ------ ---------------------- ----------   
  10. 1756   0x474946383961E3002500 This is sa  
  11. (1 row(s) affected)