SQL Server之字符串函数
以下所有例子均Studnet表为例:

计算字符串长
len()用来计算字符串的长度
字符串转换为大、小
lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大
select upper('i am a student !')
截去字符串左、右侧空
ltrim() 用来将一个字符串左侧的空格去 ,rtrim()用来将一个字符串右侧的空格去
set @str=' 我的左侧有空格!'
select @str as 初始字符, len(@str) as 初始长度,ltrim(@str) as 现有字符,len(ltrim(@str)) as 现有长度
返回由重复的空格组成的字符串
space(integer_expression) integer_expression 指示空格个数的正整数。如 integer_expression 为负,则返回空字符串
取子字符
substring(string,start_position,length) 可以从任意位置取任意长度的子字符串,
left(string,length) 从左侧开始取子字符串
right(string,length)从右侧开始取子字符串
select left('HelloWorld!' ,5)
select right('HelloWorld!' ,6)
字符串替
replace(string,要被替换的字符串,替换的字符串)
返回字符串值的逆向
reverse(string_expression)
删除指定长度的字符,并在指定的起点处插入另一组字
stuff(character_expression , start , length ,character_expression)
start 一个整数值,指定删除和插入的开始位置
length 一个整数,指定要删除的字符数
以指定的次数重复字符串
replicate(string_expression ,integer_expression)
返回字符串中指定表达式的开始位
charindex(expression1 ,expression2 , start_location )或charindex(expression1 ,expression2
expression1在expression2 中的开始位
返回指定表达式中模式第一次出现的开始位
patindex('%pattern%',expression) 返回指定表达式中某模式第一次出现的起始位置
如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零
返回输入表达式的第一个字符的整数
unicode( 'ncharacter_expression' ) ' ncharacter_expression ' nchar nvarchar 表达式
select unicode('abc') 结果为:97
返回由数字数据转换来的字符数
str(float_expression , length ,decimal )
float_expression 带小数点的近似数 (float) 数据类型的表达式
length 总长度。它包括小数点、符号、数字以及空格。默认值为 10
decimal 小数点右边的小数位数decimal 必须小于等于 16。如 decimal 大于 16,则将结果截断为小数点右边的 16 位
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('HelloWorld!')
得到一个与ASCII码数字对应的字符
Char(integer_expression) integer_expression 介于 0 255 之间的整数。如果该整数表达式不在此范围内,将返 NULL 值
返回返回具有指定的整数代码的 Unicode 字符
nchar(integer_expression) integer_expression 介于 0 65535 之间的正整数。如果指定了超出此范围的值,将返 NULL
返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效 SQL Server 分隔标识符
quotename('character_string') character_string 不得超过 128 个字符。超 128 个字符的输入将返 NULL
结果为:[abc[]]def] 请注意,字符 abc[]def 中的右方括号有两个,用于指示转义符
select QUOTENAME('abcdef','''') --分隔符是两个单引
-- 'abcdef'
select QUOTENAME('abcdef') --分隔符是]
-- [abcdef]
select QUOTENAME('abcdef','{}') --分隔符是}
-- {abcdef}
发音匹配
有时候我们并不知道一个人姓名的拼写,但是我们知道他的发音,这时我们可以进行发音的匹配度测试
soundex()用于计算一个字符串的发音特征性,这个特征值为一个四个字符的字符串,特征性的第一个字符总是初始字符串中的第一个字符,而后是一个三位数的数值
结果为:
发音特征值的含义非常复杂,如果要根据两个发音特征值来分析两个字符串的发音相似度的话非常麻烦
可以使用difference()来简化两个字符串的发音相似度比较,它可以计算两个字符串的发音特征值,并且比较它们
然后返回一0~4之间的值来反映两个字符串的发音相似度,这个值越大则表示两个字符串的发音相似度越大
结果为:
📱 扫码关注公众号
扫描二维码关注我们,获取更多精彩内容
实时更新 · 干货满满
