Home  >  Article  >  Database  >  关于SQL截取字符串函数介绍

关于SQL截取字符串函数介绍

WBOY
WBOYOriginal
2016-06-07 17:48:291147browse

本文章收藏了msssql中的的常用的几个字符串截取函数,下面分别举例说明,有需要的朋友参考一下。

A.截取从字符串左边开始N个字符

 代码如下 复制代码

   Declare @S1 varchar(100)
   Select @S1='http://www.111cn.net'
   Select Left(@S1,4)
   ------------------------------------
   显示结果: http


   B.截取从字符串右边开始N个字符(例如取字符www.163.com)

  

 代码如下 复制代码
Declare @S1 varchar(100)
   Select @S1='http://www.163.com'
   Select right(@S1,11) 
   ------------------------------------
   显示结果: www.163.com


   C.截取字符串中任意位置及长度(例如取字符www)

 代码如下 复制代码

   Declare @S1 varchar(100)
   Select @S1='http://www.111cn.net'
   Select SUBSTRING(@S1,8,3) 
   ------------------------------------
   显示结果: www

   以上例子皆是已知截取位置及长度,下面介绍未知位置的例子

2.截取未知位置的函数


   A.截取指定字符串后的字符串(例如截取http://后面的字符串)

   方法一:

 代码如下 复制代码

   Declare @S1 varchar(100)
   Select @S1='http://www.111cn.net' 
   Select Substring(@S1,CHARINDEX('www',@S1)+1,Len(@S1))
   /*此处也可以这样写:Select Substring(@S1,CHARINDEX('//',@S1)+2,Len(@S1))*/
   ------------------------------------
   显示结果: www.163.com

   需要注意:CHARINDEX函数搜索字符串时,不区分大小写,因此CHARINDEX('www',@S1)也可以写成CHARINDEX('WWW',@S1)

   方法二:(与方法一类似)

  

 代码如下 复制代码
Declare @S1 varchar(100)
   Select @S1='http://www.111cn.net' 
   Select Substring(@S1,PATINDEX('%www%',@S1)+1,Len(@S1))
   --此处也可以这样写:Select Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
   ------------------------------------
   显示结果: www.163.com  


    函数PATINDEX与CHARINDEX区别在于:前者可以参数一些参数,增加查询的功能

   方法三:

 代码如下 复制代码

   Declare @S1 varchar(100)
   Select @S1='http://www.111cn.net' 
   Select REPLACE(@S1,'http://','')
   ------------------------------------
   显示结果: www.163.com


   利用字符替换函数REPLACE,将除需要显示字符串外的字符替换为空

   方法四:

 代码如下 复制代码

   Declare @S1 varchar(100)
   Select @S1='http://www.111cn.net' 
   Select STUFF(@S1,CHARINDEX('http://',@S1),Len('http://'),'')
   ------------------------------------
   显示结果: www.163.com  

   函数STUFF与REPLACE区别在于:前者可以指定替换范围,而后者则是全部范围内替换

   B.截取指定字符后的字符串(例如截取C:Windowstest.txt中文件名)
     与A不同的是,当搜索对象不是一个时,利用上面的方法只能搜索到第一个位置

   方法一:

 代码如下 复制代码

   Declare @S1 varchar(100)
   Select @S1='C:Windowstest.txt'
   right(@S1,charindex('',REVERSE(@S1))-1)
   -------------------------------------
   显示结果: text.txt

利用函数REVERSE获取需要截取的字符串长度

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn