1、substring(expression,start,length)
expression 是字符串、二进制字符串、文本、图形、列或保护列的表达式
start 指定字符串开始位置的整数
length 一个整数,指定要返回的express的字符串的字符数或字节数
如果 expression 是受支持的字符数据类型,则返回字符数据。如果 expression 是受支持的 binary 数据类型,则返回二进制数据。
返回的字符串类型与指定表达式的类型相同(表中显示的除外)。
指定的表达式 | 返回类型 |
---|---|
char/varchar/text | varchar |
nchar/nvarchar/ntext | nvarchar |
binary/varbinary/p_w_picpath | varbinary |
declare @a varchar(100)
set @a='abcdefg'
print substring(@a,2,2)
select substring(FirstName,2,2),LastName from Employees
select x=substring('abcdef',2,3)
2、
返回字符串中从左边开始指定个数的字符。
Left(Character_expression,integer_expression)
返回字符串中从右边开始指定个数的字符。
RIGHT ( character_expression , integer_expression )
print left('abcdefgh',3)
print right('abcedefg',3)
select left(FirstName,3) from Employees
select right(FirstName,3) from Employees
3、去除字符串的左右空格
返回删除了前导空格之后的字符表达式。
ltrim(character_expression)
截断所有尾随空格后返回一个字符串。
RTRIM ( character_expression )
4、查询某个字符的开始位置
在 expression2 中搜索 expression1 并返回其起始位置(如果找到)。搜索的起始位置为 start_location。
CHARINDEX ( expression1 ,expression2 [ , start_location ] )
返回类型
如果 expression2 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint,否则为 int。
以下示例返回字符序列 bicycle 在 Document 表的 DocumentSummary 列中开始的位置。
DECLARE @document varchar(64) SELECT @document = 'Reflectors are vital safety' + ' components of your bicycle.' SELECT CHARINDEX('bicycle', @document) GO
以下示例将使用可选的 start_location 参数从 DocumentSummary 列的第五个字符开始查找 vital。
DECLARE @document varchar(64) SELECT @document = 'Reflectors are vital safety' + ' components of your bicycle.' SELECT CHARINDEX('vital', @document, 5) GO
以下示例显示了在 expression2 内找不到 expression1 时的结果集。
DECLARE @document varchar(64) SELECT @document = 'Reflectors are vital safety' + ' components of your bicycle.' SELECT CHARINDEX('bike', @document) GO
下面的示例在 'Das jst ein Test' 中执行区分大小写的字符串 'TEST' 搜索。
USE tempdb; GO --perform a case sensitive search SELECT CHARINDEX ( 'TEST', 'Das ist ein Test' COLLATE Latin1_General_CS_AS)
下面的示例在 'Das jst ein Test' 中执行区分大小写的字符串 'Test' 搜索。
USE tempdb; GO SELECT CHARINDEX ( 'Test', 'Das ist ein Test' COLLATE Latin1_General_CS_AS)
下面的示例在 'Das jst ein Test' 中执行不区分大小写的字符串 'TEST' 搜索。
USE tempdb; GO SELECT CHARINDEX ( 'Test', 'Das ist ein Test' COLLATE Latin1_General_CI_AS) GO
5、
返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。
PATINDEX ( '%pattern%' , expression )
如果 expression 的数据类型为 varchar(max) 或 nvarchar(max),则为 bigint,否则为 int。
use NorthWind
在FirstName中查找n字符的首个出现位置
select patindex('%n%',FirstName) from Employees where LastName='Davolio'
A. 在 PATINDEX 中使用模式
以下示例查找模式 ensure 在 Document 表的 DocumentSummary 列的某一特定行中的开始位置。
USE AdventureWorks2008R2; GO SELECT PATINDEX('%ensure%',DocumentSummary) FROM Production.Document WHERE DocumentNode = 0x7B40; GO
B. 在 PATINDEX 中使用通配符
以下示例使用通配符查找模式 en_ure 在 Document 表中 DocumentSummary 列的某一特定行中的开始位置,其中下划线为代表任何字符的通配符。
USE AdventureWorks2008R2; GO SELECT PATINDEX('%en_ure%', DocumentSummary) FROM Production.Document WHERE DocumentNode = 0x7B40; GO
6、替换字符串
用另一个字符串值替换出现的所有指定字符串值。
REPLACE ( string_expression , string_pattern , string_replacement )
以下示例使用 xxx 替换 abcdefghi 中的字符串 cde。
SELECT REPLACE('abcdefghicde','cde','xxx');
转载于:https://blog.51cto.com/1906754/670815