㈠字符串函数
⒈SUBSTRING(expression,start,length)
功能:返回字符表达式、二进制表达式、文本表达式或图像表达式的一部分。
expression:字符或二进制字符串(常量或字段)。
start:一个整数,指定子字符串的开始位置。
length:一个整数,指定返回字符串的长度。
示例:
declare @s varchar(50)
set @s = '123456789'
--取得从字符串@s第二位开始长度为5的字符串
select substring(@s,2,5) as 子字符串
结果:
子字符串
-----------------------
'23456'
⒉STUFF(character_expression1,start,length,character_expression2)
功能:将字符串插入另一字符串。它在第一个字符串中从开始位置删除指定长度的字,然后将第二个字符串插入第一个字符串的开始位置。
Character_expression1:一个要被插入字符串的字符串表达式。可以是常量、变量,也可以是字符列或二进制数据列。
start:一个整数,指定删除和插入的开始位置。
length:一个整数,指定要删除的字符数。
示例:
declare @s varchar(50)
set @s = '123456789'
--将'23456'删除后插入'哈哈'
select stuff(@s,2,5,'哈哈') as 代替字符串
结果:
代替字符串
-----------------------
'1哈哈789'
⒊CHARINDEX(expression1,expression2 [,start_location])
功能:在expression2中搜索expression1并返回其起始位置,搜索的开始位置为start_location。
expression1:要查找的字符表达式。最大长度为8000字符。
expression2:要搜索的字符表达式。
start_location:可选项,表示搜索的起始位置。
示例:
declare @s varchar(50)
set @s = '1234567859'
--从第位开始搜索'5',并返回其在字符串中所在位置
select charindex('5',@s,8) as 位置
-
结果:
位置
-----------------------
9
⒋STR(float_expression,[,length[,decimal]])
功能:返回右数字数据转换来的字符数据(char)。
float_expression:带小数点的近似数字(float)数据类型表达式。
length:可选项,总长度。包括小数点、符号、数字以及空格。默认为10。
decimal:可选项,小数点后的位数。Decimal必须小于或等于16.
示例:
declare @f float
set @f = -123.45
--将该数字转换为总长度为,小数点为位的字符
select str(@f,6,1) 字符数据
结果:
字符数据
-----------------------
'-123.5'
⒌PATINDEX(‘%patten%’,expression)
功能:返回指定表达式中某模式第一次出现的起始位置。如果没有找到该模式则返回0。
Patten:一个文字字符串。可以使用通配符,但patten之前和之后必须要有%。
expression:一个表达式,通常为要在其中搜索模式的列。
示例:
declare @s nchar(50)
set @s = 'abcd21cdf'
--返回字符串中第一个数字的开始位置
select patindex('%[1-9]%',@s) 数字开始位置
结果:
数字开始位置
-----------------------
5
⒍REPLACE(string_expression1,string_expression2,string_expression13)
功能:用另一个字符串值替换出现的所有指定字符串值。
string_expression1:要搜索的字符串表达式。
string_expression2:要查找的字符串表达式。
string_expression3:替换字符串。
示例:
declare @s nchar(50)
set @s = 'abcb'
--返回替换后的字符串
select replace(@s,'b','*') 替换后的字符串
结果:
替换后的字符串
-----------------------
'a*c*'
⒎LEN(string_expression)
功能:返回指定字符串表达式的字符数,其中不包含尾空格。
string_expression:要计算的字符串。
示例:
declare @s nchar(50)
set @s = 'abcb '
--返回字符串长度
select len(@s) 字符串长度
结果:
字符串长度
-----------------------
4
⒏QUOTENAME(character_string [,quote_character])
功能:返回带有分隔符的UNICODE字符串。
string_expression:要计算的字符串。
quote_character:用作分隔符的字符串。可以为单引号等,默认为方括号。
declare @s varchar(50)
set @s = 'abcb'
--返回有分隔符的字符串
select quotename(@s,'''') 分隔符的字符串
结果:
分隔符的字符串
-----------------------
'abcb'
⒐REPLICATE(string_expression ,integer_expression)
功能:以指定的次数重复字符串。
string_expression:要重复的字符串。
integer_expression:要重复的次数。
示例:
declare @s varchar(50)
set @s = 'abcb-'
--返回有分隔符的字符串
select replicate(@s,2) 重复后的值
结果:
重复后的值
-----------------------
'abcb-abcb-'
⒑SPACE(integer_expression)
功能:返回由重复的空格组成的字符串。
integer_expression:空格数。
示例:
declare @s varchar(50)
set @s = 'abcd'
select '1'+ space(2)+@s 加空格后
结果:
加空格后
-----------------------
'1 abcd'
⒒REVERSE(character_expression)
功能:返回字符串表达式的逆向表达式。
Character_expression:一个字符数据表达式。
示例:
declare @s varchar(50)
set @s = 'abcd'
select reverse(@s) 逆向字符串
结果:
逆向字符串
-----------------------
'dcba'
⒓SOUNDEX (character_expression)
功能:返回一个由四个字符组成的代码(SOUNDEX),用于比较字符发音的相似度。
character_expression:一个字符数据表达式。
示例:
declare @s1 varchar(50)
set @s1 = 'ad'
declare @s2 varchar(50)
set @s2 = 'ac'
select soundex(@s1) soundex1,soundex(@s2) soundex2
结果:
soundex1 soundex2
-----------------------
A 000 A200
⒔DIFFERENCE (character_expression1,character_expression2)
功能:返回一个整数值,指示两个字符串之间的soundex值之间的差异。
返回的值从0到4不等:0 表示几乎不同或完全不同,4 表示几乎相同或完全相同。
character_expression1:第一个字符数据表达式。
character_expression2:第二个字符数据表达式。
示例:
declare @s1 varchar(50)
set @s1 = 'ad'
declare @s2 varchar(50)
set @s2 = 'ac'
select difference(@s1,@s2) 差异
结果:
差异
-----------------------
3
⒕ASCII (character_expression)
功能:返回指定的字符表达式中最左侧的字符的ASCII码。
character_expression:一个字符数据表达式。
示例:
declare @s varchar(50)
set @s = 'a'
select ascii(@s) ascii码
结果:
ascii码
-----------------------
97
⒖UNICODE (character_expression)
功能:按照UNICODE标准的定义,返回指定的字符表达式中最左侧的字符的UNICODE下的ASCII码。
character_expression:一个字符数据表达式。
示例:
declare @s nvarchar(50)
set @s = N'Åb'
select UNICODE(@s) UNICODE值
结果:
UNICODE值
-----------------------
97
⒗CHAR(integer_expression)/ NCHAR(integer_expression)
功能:将 INT ASCII 代码转换为字符/根据 Unicode 标准的定义,返回具有指定的整数代码的 Unicode 字符。
integer_expression:介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。/介于 0 与 65535 之间的正整数。如果指定了超出此范围的值,将返回 NULL
示例:
select nchar(97) ncharascil,char(97) charascil
结果:
ncharascil charascil
-----------------------
a a
⒘LOWER(character_expression)/ UPPER(character_expression)
功能:将大写/小写字符数据转换为小写/大些字符数据后返回字符表达式。
character_expression:字符串或二进制数据的表达式。
示例:
select lower('A') 转换成小写, upper('a') 转换成大写
结果:
转换成小写 转换成大写
-----------------------
'a' 'A'
⒙LEFT(character_expressio,integer_expression)/ RIGHT(character_expressio,integer_expression)
功能:返回字符串中从左边/右边开始指定个数的字符。
character_expression:一个字符数据表达式。
integer_expression:正整数,指定 character_expression 将返回的字符数。
示例:
declare @s nvarchar(50)
set @s = 'abcd'
select left(@s,2) myLeft,right(@s,2) myRight
结果:
myLeft myRight
-----------------------
'ab' 'cd'
⒆LTRIM(character_expression)/RTRIM(character_expression)
功能:返回删除了前导/后导空格之后的字符表达式。
character_expression:字符串或二进制数据的表达式。
示例:
declare @s nvarchar(50)
set @s = ' abcd '
select ltrim(@s) myLeft,rtrim(@s) myRight
结果:
myLeft myRight
-----------------------
'abcd ' ' abcd'