SQLServer之字符串函数
以下所有例⼦均Studnet表为例:
计算字符串长度
len()⽤来计算字符串的长度
select sname ,len(sname) from student
字符串转换为⼤、⼩写
lower() ⽤来将⼀个字符串转换为⼩写,upper() ⽤来将⼀个字符串转换为⼤写
select lower('I AM A STUDENT !')
select upper('i am a student !')
截去字符串左、右侧空格
ltrim() ⽤来将⼀个字符串左侧的空格去掉,rtrim()⽤来将⼀个字符串右侧的空格去掉
declare @str varchar(100)
set @str=' 我的左侧有空格!'
select @str as初始字符, len(@str) as初始长度,ltrim(@str) as现有字符,len(ltrim(@str)) as现有长度
返回由重复的空格组成的字符串
space(integer_expression) integer_expression 指⽰空格个数的正整数。如果 integer_expression 为负,则返回空字符串。select 'A'+ space(2)+'B'
取⼦字符串
substring(string,start_position,length) 可以从任意位置取任意长度的⼦字符串,
left(string,length) 从左侧开始取⼦字符串
right(string,length)从右侧开始取⼦字符串
select substring('HelloWorld!',6,6)
select left('HelloWorld!' ,5)
select right('HelloWorld!' ,6)
字符串替换
replace(string,要被替换的字符串,替换的字符串)
select replace('HelloWorld!','o','e') 结果为:HelleWerld!
返回字符串值的逆向值
reverse(string_expression)
select reverse('abc') 结果为:cba
删除指定长度的字符,并在指定的起点处插⼊另⼀组字符stuff(character_expression , start , length ,character_expression) start ⼀个整数值,指定删除和插⼊的开始位置。
length ⼀个整数,指定要删除的字符数。
select stuff('abcdefg',1,6,'Hello ') 结果为:Hello g
以指定的次数重复字符串值replicate(string_expression ,integer_expression)
select replicate('abc',4) 结果为:abcabcabcabc
返回字符串中指定表达式的开始位置
charindex(expression1 ,expression2 , start_location )或charindex(expression1 ,expression2 )
expression1在expression2 中的开始位置
select charindex('H','elloHWorld') 结果为:5
返回指定表达式中模式第⼀次出现的开始位置
patindex('%pattern%',expression) 返回指定表达式中某模式第⼀次出现的起始位置;
如果在全部有效的⽂本和字符数据类型中没有到该模式,则返回零。
select patindex('%Hello%','WorldHello') 结果为:6
返回输⼊表达式的第⼀个字符的整数值
unicode( 'ncharacter_expression' ) ' ncharacter_expression ' 为 nchar 或 nvarchar 表达式。
select unicode('a') 结果为:97
select unicode('abc') 结果为:97
返回由数字数据转换来的字符数据str(float_expression , length ,decimal )
float_expression 带⼩数点的近似数字 (float) 数据类型的表达式。
length 总长度。它包括⼩数点、符号、数字以及空格。默认值为 10。
decimal ⼩数点右边的⼩数位数。decimal 必须⼩于等于 16。如果 decimal ⼤于 16,则将结果截断为⼩数点右边的 16 位。
select str(123.436,2), len(str(123.436,2)) //当表达式超出指定长度时,字符串为指定长度返回 **
select str(123.436), len(str(123.436)),
str(123.436,6), len(str(123.436,6)),
str(123.436,6,1), len(str(123.436,6,1)) //由六个数字和⼀个⼩数点组成的表达式转换为有六个位置的字符串。
数字的⼩数部分舍⼊为⼀个⼩数位。
select str(1234.436), len(str(1234.436)),
str(1234.436,6), len(str(1234.436,6)),
str(1234.436,6,1),len(str(1234.436,6,1))
结果为:
得到字符的ASCII码
ascii()⽤来得到⼀个字符的ASCII码,它有且只有⼀个参数,如果参数为字符串,那么取第⼀个字符的ASCII码
select ascii('H')
select ascii('HelloWorld!')
得到⼀个与ASCII码数字对应的字符
Char(integer_expression) integer_expression 介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。
select Char(72)
返回返回具有指定的整数代码的 Unicode 字符
nchar(integer_expression) integer_expression 介于 0 与 65535 之间的正整数。如果指定了超出此范围的值,将返回 NULL。
select nchar(1000)
返回带有分隔符的 Unicode 字符串,分隔符的加⼊可使输⼊的字符串成为有效的 SQL Server 分隔标识符。quotename('character_string') character_string 不得超过 128 个字符。超过 128 个字符的输⼊将返回 NULL。
字符串长度必须小于等于255select quotename('abc[aa]def')
结果为:[abc[]]def] 请注意,字符串 abc[]def 中的右⽅括号有两个,⽤于指⽰转义符。
select QUOTENAME('abcdef','''') --分隔符是两个单引号
-- 'abcdef'
select QUOTENAME('abcdef') --分隔符是]
-- [abcdef]
select QUOTENAME('abcdef','{}') --分隔符是}
-- {abcdef}
发⾳匹配度
有时候我们并不知道⼀个⼈姓名的拼写,但是我们知道他的发⾳,这时我们可以进⾏发⾳的匹配度测试。
soundex()⽤于计算⼀个字符串的发⾳特征性,这个特征值为⼀个四个字符的字符串,特征性的第⼀个字符总是初始字符串中的第⼀个字符,⽽后是⼀个三位数的数值。
select sname ,soundex(sname) from student
结果为:
发⾳特征值的含义⾮常复杂,如果要根据两个发⾳特征值来分析两个字符串的发⾳相似度的话⾮常⿇烦。
可以使⽤difference()来简化两个字符串的发⾳相似度⽐较,它可以计算两个字符串的发⾳特征值,并且⽐较它们,然后返回⼀个0~4之间的值来反映两个字符串的发⾳相似度,这个值越⼤则表⽰两个字符串的发⾳相似度越⼤。
select sname,soundex(sname), difference(sname,'Herry') from stu
结果为:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论