SQL点滴33—SQL中的字符串操作

系统 1739 0
原文: SQL点滴33—SQL中的字符串操作

计算字符串长度
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

 

 

 

 

SQL点滴33—SQL中的字符串操作


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论