Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 181|回复: 0

[默认分类] SQL Server之字符串函数

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-21 15:34:29 | 显示全部楼层 |阅读模式
    以下所有例子均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。



      select 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|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-17 01:43 , Processed in 0.364307 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表