zoukankan      html  css  js  c++  java
  • SQL SERVER字符串函数

    本篇文章还是学习《程序员的SQL金典》内容的记录,此次将讲解的是SQL SERVER的字符串函数。

    其实数据库跟程序语言库一样,都会集成很多可以使用的API。这些API,如果你熟悉的话,将减少在代码层次的再次加工操作。

    我想字符串函数的使用价值还是很高的,所以我觉得一边学习一起把常用的东西都记录下来。一来加深自己的悟性,二来通过归纳使知识为我所用。

    SQL SERVER支持的字符串函数(其它数据库这里就不罗列了,想看更多的可以关注《程序员的SQL金典》),本文将介绍如下内容:

    • LEN(string)函数
    • LOWER(string)函数
    • UPPER (string)函数
    • LTRIM(string)函数
    • RTRIM (string)函数
    • SUBSTRING(string,start_position,length)函数
    • CHARINDEX(string,substring)函数
    • LEFT (string,length)函数
    • RIGHT (string,length) 函数
    • ASCII(string)函数
    • ASCII(string)函数
    LEN(string)函数

    此函数是用来计算一个字符串的长度,接受一个参数(可以为表里面的一个字符串字段,也可以为别的)。这里面,是没有区分大小写(下面的函数都一样)。LEN,len,还是Len都等同。例子如下:

    SELECT FName, LEN(FName) FROM T_Person

    注:如果给LEN函数传递的参数是一个时间字段的话,那么返回的结果就不对,比如一个DateTime。所以呢,这个函数是用来计算字符串的长度,别的类型参数也能返回结果,但是就不一定正确。

    I、如果传进去的是NULL,那么返回出来的还是NULL。

    II、对于一个字符串形如' a a ',返回的结果是4,而不是5。即计算的结果不包括右侧全为空格字符串部分。

    LOWER(string)函数

     

    此函数是用来把一字符串都转换为小写字符串。跟LEN()函数一样,也接受一个参数。

    SELECT FName, LOWER(FName) FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    UPPER (string)函数

    与LOWER()函数相反,此函数把字符串都转换为大写字符串。也同样接受一个参数。

    SELECT FName, UPPER(FName) FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    LTRIM(string)函数

    此函数是去除字符串左边的空格(对于夹在字符串里面的空格则无能为力)。也同样接受一个参数。

    SELECT FName,LTRIM(FName),LTRIM(' abc ') FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    RTRIM (string)函数

    此函数是去除字符串右边的空格(对于夹在字符串里面的空格则无能为力)。也同样接受一个参数。

    SELECT FName,RTRIM(FName),RTRIM(' abc ') FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    如果需要去除两边的空格(对于夹在字符串里面的空格则无能为力),则需要联合来使用。

    SELECT FName,LTRIM(RTRIM(FName)),LTRIM(RTRIM(' abc ')) FROM
    T_Person
    SUBSTRING(string,start_position,length)函数

     

    此函数是使用来获取子字符串。其中参数string为主字符串,start_position为子字符串在主字符串中的起始位置,length
    为子字符串的最大长度。需要注意的是这里的start_position是从1开始,不同于数组是从0开始。如果给的是0的话,相当于取了一个''。

    SELECT FName, SUBSTRING(FName,2,3) FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    CHARINDEX(substring,string)函数

    此函数是计算子字符串在主字符串中位置。其中参数substring为子字符串,string为主字符串。这个函数可以检测制定的子字符串是否存在于主字符串中,如果存在则还可以返回所在的位置。假如有匹配的话,结果大于0。也就是匹配成功的话,至少从1开始。

    SELECT FName,CHARINDEX('m', FName), CHARINDEX('ly', FName)
    FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    LEFT (string,length)函数

    此函数是实现从左侧开始取子字符串,其中参数string为主字符串,length为子字符串的最大长度。即取出来的结果是1至length范围内的子字符串。

    SELECT FName, LEFT(FName,3) , LEFT(FName,2)
    FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    这种方式等同于使用SUBSTRING(string,start_position,length)函数:

    SELECT FName,SUBSTRING(FName, 1,3) FROM T_Person
    RIGHT(string,length)函数

    此函数是实现从右侧开始取子字符串,其中参数string为主字符串,length为子字符串的最大长度。即取出来的结果是1至length范围内的子字符串。

    SELECT FName, RIGHT(FName,3) , RIGHT(FName,2)
    FROM T_Person

    注:如果传进去的是NULL,那么返回出来的还是NULL。

    这种方式等同于使用SUBSTRING(string,start_position,length)函数,其中SUBSTRING(string, LEN(string)- length+1, length)等价于RIGHT (string,length)。

    SELECT FName, SUBSTRING(FName,LEN(FNAME)-2,3) , SUBSTRING(FName,LEN(FNAME)-1,2)
    FROM T_Person
    REPLACE(string,string_tobe_replace,string_to_replace)函数

    此函数是实现字符串的替换功能,其中参数string 为要进行替换操作的主字符串,参数string_tobe_replace 为要被替换的字符串,即string_to_replace将替换string_tobe_replace所有出现的地方。 

    select FName,REPLACE(FName,'i','e'),FIDNumber,
    REPLACE(FIDNumber,'2345','abcd') FROM T_Person

    借助替换为''来实现删除字符串的功能:

    SELECT FName, REPLACE(FName,'m','') ,FIDNumber,
    REPLACE(FIDNumber,'123','') FROM T_Person

    前面介绍过LTRIM(string)函数和RTRIM(string)函数,两者最终只能删除两侧的空格,而对于在字符串里面的空格,则无能为力。而借助于REPLACE函数则可以轻松解决。

    SELECT REPLACE(' abc 123 wpf',' ','') , REPLACE(' ccw enet wcf f',' ','')
    ASCII(string)函数

    此函数用来得到一个字符的ASCII 码,它有且只有一个参数,这个参数为待求ASCII码的字符,如果参数为一个字符串则函数返回第一个字符的ASCII码。

    SELECT ASCII('a') , ASCII('abc')

    注:如果传进去的是NULL或者是'',那么返回出来的是NULL。

    CHAR(string)函数

    CHAR(string)函数ASCII(string)函数相反,此函数用来得到一个字符的ASCII 码。

    SELECT CHAR(56) , CHAR(90) ,'a', CHAR( ASCII('a') )

    注:如果传进去的是NULL,那么返回出来的是NULL。

    DIFFERENCE(string)函数

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

    SELECT DIFFERENCE(FName,'Merry') FROM T_Person

    注:如果传进去的是NULL,那么返回出来的是NULL。

     以上的SQL代码都为《程序员的SQL金典》(作者:杨中科)例子,书中的例子更详细,又有相应的步骤查看结果。大家有兴趣的话,可以网上下载PDF文档看,当然购买正版书也是不错的选择。至此本文完。

  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/csdbfans/p/3448384.html
Copyright © 2011-2022 走看看