SQL Server:字符串函数

来源:互联网 发布:jquery.rotate.min.js 编辑:程序博客网 时间:2024/05/20 06:22
  • 1. len():计算字符串长度
  • 2. lower()、upper():字符串转换为大、小写
  • 3. ltrim()、rtrim():截去字符串左、右侧空格
  • 4. space():返回由重复的空格组成的字符串
  • 5. substring()、left()、right():取子字符串
  • 6. replace():字符串替换
  • 7. reverse():返回字符串值的逆向值
  • 8. stuff():删除指定长度的字符,并在指定的起点处插入另一组字符
  • 9. replicate():以指定的次数重复字符串值
  • 10. charindex():返回字符串中指定表达式的开始位置
  • 11. patindex():返回指定“表达式中模式”第一次出现的开始位置
  • 12. unicode():返回输入表达式的第一个字符的整数值
  • 13. str():返回由数字数据转换来的字符数据
  • 14. ascii():得到字符的ASCII码
  • 15. Char():得到一个与ASCII码数字对应的字符
  • 16. nchar():返回返回具有指定的整数代码的 Unicode 字符
  • 17. quotename() 转义
  • 18. soundex():发音匹配度

以下所有例子均Studnet表为例:

1. len():计算字符串长度

len()用来计算字符串的长度,每个中文汉字或英文字母都为一个长度

select sname, len(sname) from student

2. lower()、upper():字符串转换为大、小写

lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写

select lower('I AM A STUDENT !')select upper('i am a student !')

3. ltrim()、rtrim():截去字符串左、右侧空格

ltrim():用来将一个字符串左侧的空格去掉,rtrim()用来将一个字符串右侧的空格去掉

declare @str varchar(100);set @str=' 我的左侧有空格!';select @str as 初始字符, len(@str) as 初始长度, ltrim(@str) as 现有字符, len(ltrim(@str)) as 现有长度;

返回结果:初始长度分别为9和8

4. space():返回由重复的空格组成的字符串

space(integer_expression):integer_expression 指示空格个数的正整数。如果 integer_expression 为负,则返回空字符串。

select 'A'+ space(2)+'B'    /* 结果: 'A  B' */

5. substring()、left()、right():取子字符串

  • substring(string, start_position, length):可以从任意位置取任意长度的子字符串,

  • left(string, length):从左侧开始取子字符串

  • right(string, length):从右侧开始取子字符串

select substring('HelloWorld!', 6, 6)   /* 结果:World */select left('HelloWorld!', 5)           /* 结果:Hello */select right('HelloWorld!', 6)          /* 结果:oWorld */

6. replace():字符串替换

replace(string, 要被替换的字符串, 替换的字符串)

select replace('HelloWorld!','o','e')   /* 结果为:HelleWerld! */

7. reverse():返回字符串值的逆向值

reverse(string_expression)

select reverse('abc')   /* 结果为:cba*/

8. stuff():删除指定长度的字符,并在指定的起点处插入另一组字符

stuff(character_expression, start, length, character_expression) start:整数,指定删除和插入的开始位置。 length:整数,指定要删除的字符数。

select stuff('abcdefgf', 2, 6, 'Hello-')    /* 结果为:aHello-f */    select stuff('abcdefgf', 2, 6, 'Hello')        /* 结果为:aHellof */

9. replicate():以指定的次数重复字符串值

replicate(string_expression ,integer_expression)

select replicate('abc', 4)  /* 结果为:abcabcabcabc */

10. charindex():返回字符串中指定表达式的开始位置

charindex(expression1 ,expression2 , start_location )或charindex(expression1 ,expression2 )

expression1在expression2 中的开始位置

select charindex('H','elloHWorldHabc')    /* 结果为:5 */

11. patindex():返回指定“表达式中模式”第一次出现的开始位置

patindex('%pattern%', expression):返回指定“表达式中某模式”第一次出现的起始位置; 如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。

select patindex('%Hello%','WorldHello') 结果为:6

12. unicode():返回输入表达式的第一个字符的整数值

unicode('ncharacter_expression'):'ncharacter_expression' 为 nchar 或 nvarchar 表达式。

select unicode('a')        /* 结果为:97 */select unicode('abc')    /* 结果为:97 */

13. str():返回由数字数据转换来的字符数据

str(float_expression, length ,decimal ) float_expression:带小数点的近似数字 (float) 数据类型的表达式。 length:总长度。它包括小数点、符号、数字以及空格。默认值为 10。 * decimal:小数点右边的小数位数。decimal 必须小于等于 16。如果 decimal 大于 16,则将结果截断为小数点右边的 16 位。

select str(1234.436, 3)         /* 结果为:'**';当表达式超出指定长度时返回'**' */select len(str(1234.436, 3))     /* 结果为:3 */    select str(123.436), len(str(123.436))              /* 结果为:'123', 10 */select str(123.436, 6), len(str(123.436, 6))        /* 结果为:'123', 6 */select str(123.436, 6, 1), len(str(123.436,6, 1))   /* 结果为:'123.4', 6 */

14. ascii():得到字符的ASCII码

ascii():用来得到一个字符的ASCII码,它有且只有一个参数,如果参数为字符串,那么取第一个字符的ASCII码

select ascii('H')               /* 结果为:72 */select ascii('HelloWorld!')     /* 结果为:72 */

15. Char():得到一个与ASCII码数字对应的字符

Char(integer_expression):integer_expression 介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。

select Char(72)     /* 结果为:H */

16. nchar():返回返回具有指定的整数代码的 Unicode 字符

nchar(integer_expression) integer_expression 介于 0 与 65535 之间的正整数。如果指定了超出此范围的值,将返回 NULL。

select nchar(20013)        /* 结果为:'中' */select NCHAR(72)        /* 结果为:'H' */

17. quotename() 转义

参考《SqlServer中quotename用法与实例》

18. soundex():发音匹配度

有时候我们并不知道一个人姓名的拼写,但是我们知道他的发音,这时我们可以进行发音的匹配度测试。 soundex():用于计算一个字符串的发音特征性,这个特征值为一个四个字符的字符串,特征性的第一个字符总是初始字符串中的第一个字符,而后是一个三位数的数值。

select sname, soundex(sname) from student

结果为:

发音特征值的含义非常复杂,如果要根据两个发音特征值来分析两个字符串的发音相似度的话非常麻烦。

可以使用difference()来简化两个字符串的发音相似度比较,它可以计算两个字符串的发音特征值,并且比较它们,然后返回一个0~4之间的值来反映两个字符串的发音相似度,这个值越大则表示两个字符串的发音相似度越大。

select sname, soundex(sname), difference(sname,'Herry') from stu

结果为: 

本文转自《SQL Server之字符串函数》,并稍作修改。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 重庆产权50年后怎么办 小区在监狱附近怎么办 遇到开发商捂盘怎么办 卖完房子后悔了怎么办 没有钱买房子怎么办 没有钱想买房怎么办 房子卖亏了后悔怎么办 物业停业主水电怎么办 死者家属一直闹怎么办 车祸找不到死者家属怎么办 房子违章被投诉怎么办 桐乡世贸二期怎么办 失业金汇到保险金账户怎么办 氧气罐阀门漏气怎么办 小微餐饮证怎么办 打网球手腕疼怎么办 晚上睡觉饿了怎么办 孕妇凌晨饿了怎么办 减肥想吃泡面怎么办 自考的实践考核怎么办 c1本怎么办从业资格证 办理资格证假的怎么办 高一学习差怎么办 职业资格证书理论考试不合格怎么办 职称证查不到怎么办 社保与工资不符怎么办 社保审计不过关怎么办 企安宝登录不上怎么办 苹果维修没发票怎么办 园林绿化资质取消后怎么办 出租车从业资格证到期怎么办 养老金认证身份证不符怎么办 硬盘指示灯不亮怎么办 做业务产品质量很差怎么办 没有户籍证明了怎么办 回执编号忘了怎么办 泳镜里面花了怎么办 网页打印预览空白怎么办 中专毕业证掉了怎么办 会计证年检忘了怎么办 会计准考证丢了怎么办