zoukankan      html  css  js  c++  java
  • MySQL教程61-MySQL 字符串函数

    LENGTH函数:获取字符串长度

    MySQL LENGTH(str) 函数的返回值为字符串的字节长度,使用 uft8(UNICODE 的一种变长字符编码,又称万国码)编码字符集时,一个汉字是 3 个字节,一个数字或字母是一个字节。

    【实例】使用 LENGTH 函数计算字符串长度,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT LENGTH('name'),LENGTH('数据库');
    +----------------+---------------------+
    |LENGTH('name')  | LENGTH('数据库')    |
    +----------------+---------------------+
    |              4 |                   9 |
    +----------------+---------------------+
    1 row in set (0.04 sec)
    View Code

    由运行结果可以看到,一个汉字是 3 个字节,“数据库”字符串占 9 个字节。英文字符的个数和所占的字节相同,一个字符占 1 个字节。

    CHAR_LENGTH函数:获取字符串长度

    和length函数的区别是, char_length函数单位为字符,不管汉字还是数字或者是字母都算是一个字符。

    【实例】使用 char_length函数计算字符串长度,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT LENGTH('name'),LENGTH('数据库'),char_length('name'), char_length('数据库');
    +----------------+---------------------+---------------------+--------------------------+
    | LENGTH('name') | LENGTH('数据库')    | char_length('name') | char_length('数据库')    |
    +----------------+---------------------+---------------------+--------------------------+
    |              4 |                   9 |                   4 |                        3 |
    +----------------+---------------------+---------------------+--------------------------+
    1 row in set (0.00 sec)
    View Code

    CONCAT函数:字符串拼接

    MySQL 中的 CONCAT(sl,s2,...) 函数返回结果为连接参数产生的字符串,或许有一个或多个参数。

    若有任何一个参数为 NULL,则返回值为 NULL。若所有参数均为非二进制字符串,则结果为非二进制字符串。若自变量中含有任一二进制字符串,则结果为一个二进制字符串。

    【实例】使用 CONCAT 函数连接字符串,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT CONCAT('MySQL','5.7'),CONCAT('MySQL',NULL);
    +-----------------------+----------------------+
    | CONCAT('MySQL','5.7') | CONCAT('MySQL',NULL) |
    +-----------------------+----------------------+
    | MySQL5.7              | NULL                 |
    +-----------------------+----------------------+
    1 row in set (0.03 sec)
    View Code

    由运行结果可知,CONCAT('MySQL','5.7') 返回两个字符串连接后的字符串;CONCAT(‘MySQL’,NULL) 中有一个参数为 NULL,因此返回结果为 NULL。

    CONCAT_WS函数:使用指定分隔符的字符串拼接

    语法:CONCAT_WS(separator, str1, str2…), 使用separator连接str1、str2…,如:执行SELECT CONCAT_WS(',','a','b','c')将会输出a,b,c

    注意: 
      1. 若分隔符为NULL,则结果为NULL,如:执行SELECT CONCAT_WS(NULL,'a','b','c')将会输出NULL 
      2. 若字符串中存在NULL,则会忽略该字符,如:执行执行SELECT CONCAT_WS(',','a',NULL,'c')将会输出a,c

    【实例】使用 CONCAT_WS函数连接字符串,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT CONCAT_WS(NULL,'a','b','c'), CONCAT_WS(',','a',NULL,'c'), CONCAT_WS('-','a', 'b', 'c');
    +-----------------------------+-----------------------------+------------------------------+
    | CONCAT_WS(NULL,'a','b','c') | CONCAT_WS(',','a',NULL,'c') | CONCAT_WS('-','a', 'b', 'c') |
    +-----------------------------+-----------------------------+------------------------------+
    | NULL                        | a,c                         | a-b-c                        |
    +-----------------------------+-----------------------------+------------------------------+
    1 row in set (0.04 sec)
    View Code

    GROUP_CONCAT函数:连接指定列字符串

    语法:GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’])

    说明: 将指定列连接起来

    【实例】, 例如表temp中name列数据如下:

    mysql> select * from temp;
    +------+
    | num  |
    +------+
    |   64 |
    |   11 |
    |   22 |
    +------+
    3 rows in set (0.00 sec)
    View Code

    然后使用GROUP_CONCAT函数连接name列, 指定连接符为'-'

    mysql> select group_concat(num separator '-') from temp;
    +---------------------------------+
    | group_concat(num separator '-') |
    +---------------------------------+
    | 64-11-22                        |
    +---------------------------------+
    1 row in set (0.00 sec)
    View Code

    不指定连接符, 默认使用逗号连接, 如下:

    mysql> select group_concat(num) from temp;
    +-------------------+
    | group_concat(num) |
    +-------------------+
    | 64,11,22          |
    +-------------------+
    1 row in set (0.33 sec)
    View Code

    INSERT函数:替换字符串

    MySQL 中替换字符串函数 INSERT(s1,x,len,s2) ,  字符串 s1中, 起始于 x 位置开始的len 个字符长的字符串, 用s2替换。

    若 x 超过字符串长度,则返回值为原始字符串。假如 len 的长度大于其他字符串的长度,则从位置 x 开始替换。若任何一个参数为 NULL,则返回值为 NULL。

    【实例】使用 INSERT 函数进行字符串替换操作,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT INSERT('Football',2,4,'Play') AS col1,
        -> INSERT('Football',-1,4,'Play') AS col2,
        -> INSERT('Football',3,20,'Play') AS col3;
    +----------+----------+--------+
    | col1     | col2     | col3   |
    +----------+----------+--------+
    | FPlayall | Football | FoPlay |
    +----------+----------+--------+
    1 row in set (0.04 sec)
    View Code

    由执行结果可知:

    • 第一个函数 INSERT('Football',2,4,'Play') 将“Football”从第 2 个字符开始长度为 4 的字符串替换为 Play,结果为“FPlayall”;
    • 第二个函数 ('Football',-1,4,'Play') 中的起始位置 -1 超出了字符串长度,直接返回原字符串;
    • 第三个函数 INSERT('Football',3,20,'Play') 替换长度超出了原字符串长度,则从第 3 个字符开始,截取后面所有的字符,并替换为指定字符 Play,结果为“FoPlay”。

    LOWER函数:将字母转换成小写

    MySQL 中字母小写转换函数 LOWER(str) 可以将字符串 str 中的字母字符全部转换成小写。

    【实例】使用 LOWER 函数将字符串中所有的字母字符转换为小写,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT LOWER('BLUE'),LOWER('Blue');
    +---------------+---------------+
    | LOWER('BLUE') | LOWER('Blue') |
    +---------------+---------------+
    | blue          | blue          |
    +---------------+---------------+
    1 row in set (0.03 sec)
    View Code

    由结果可以看到,原来所有字母为大写的,全部转换为小写,如“BLUE”,转换之后为“blue”;大小写字母混合的字符串,小写不变,大写字母转换为小写字母,如“Blue”,转换之后为“bule”。

    UPPER函数:将字母转换成大写

    与函数LOWER相反作用....

    LEFT函数:从左侧截取字符串

    MySQL 中的 LEFT(s,n) 函数返回字符串 s 最左边的 n 个字符。

    【实例】使用 LEFT 函数返回字符串中左边的字符,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT LEFT('MySQL',2);
    +-----------------+
    | LEFT('MySQL',2) |
    +-----------------+
    | My              |
    +-----------------+
    1 row in set (0.04 sec)
    View Code

    由运行结果可知,返回字符串“MySQL”左边开始的长度为 2 的子字符串,结果为“My”。

    RIGHT函数:从右侧截取字符串

    与函数LEFT相反作用....

    TRIM函数:删除空格

    MySQL 中删除空格函数 TRIM(s) 删除字符串 s 两侧的空格。

    【实例】SELECT CONCAT('[',TRIM('mobile'),']');输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT '[   mobile   ]',CONCAT('[',TRIM('   mobile   '),']');
    +----------------+--------------------------------------+
    | [   mobile   ] | CONCAT('[',TRIM('   mobile   '),']') |
    +----------------+--------------------------------------+
    | [   mobile   ] | [mobile]                             |
    +----------------+--------------------------------------+
    1 row in set (0.07 sec)
    View Code

    由执行结果可知,函数执行之后字符串“mobile”两边的空格被删除,结果为“mobile”。

    REPLACE函数:字符串替换

    MySQL 中替换函数 REPLACE(s,s1,s2) 使用字符串 s2 替换字符串 s 中所有的字符串 s1。

    【实例】使用 REPLACE 函数进行字符串替换操作,输入的 SQL 语句和执行过程如下所示。

    mysql> SELECT REPLACE('aaa.mysql.com','a','w');
    +----------------------------------+
    | REPLACE('aaa.mysql.com','a','w') |
    +----------------------------------+
    | www.mysql.com                    |
    +----------------------------------+
    1 row in set (0.00 sec)
    View Code

    由运行结果可以看出,使用 REPLACE('aaa.mysql.com','a','w') 将“aaa.mysql.com”字符串的“a”字符替换为“w”字符,结果为“www.mysql.com”。

    SUBSTRING函数:截取字符串

    MySQL 中获取子串函数 SUBSTRING(s,n,len) 带有 len 参数的格式,从字符串 s 返回一个长度同 len 字符相同的子字符串,起始于位置 n。

    也可能对 n 使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的第 n 个字符,即倒数第 n 个字符,而不是字符串的开头位置。

    【实例】使用 SUBSTRING 函数获取指定位置处的子字符串,输入的 SQL 语句和执行结果如下所示。

    mysql> SELECT SUBSTRING('computer',3) AS col1,
        -> SUBSTRING('computer',3,4) AS col2,
        -> SUBSTRING('computer',-3) AS col3,
        -> SUBSTRING('computer',-5,3) AS col4;
    +--------+------+------+------+
    | col1   | col2 | col3 | col4 |
    +--------+------+------+------+
    | mputer | mput | ter  | put  |
    +--------+------+------+------+
    1 row in set (0.00 sec)
    View Code

    SUBSTRING('computer',3) 返回从第 3 个位置开始到字符串结尾的子字符串,结果为“mputer”;SUBSTRING('computer',3,4) 返回从第 3 个位置开始长度为 4 的子字符串,结果为“mput”;

    SUBSTRING(computer,-3) 返回从倒数第 3 个位置到字符串结尾的子字符串,结果为“ter”;SUBSTRING(computer,-5,3) 返回从倒数第 5 个位置开始长度为 3 的子字符串,结果为“put”。

    REVERSE函数:反转字符串

    MySQL 中字符串逆序函数 REVERSE(s) 可以将字符串 s 反转,返回的字符串的顺序和 s 字符串的顺序相反。

    【实例】使用 REVERSE 函数反转字符串,输入的 SQL 语句和执行过程如下所示。

    mysql> SELECT REVERSE('hello');
    +------------------+
    | REVERSE('hello') |
    +------------------+
    | olleh            |
    +------------------+
    1 row in set (0.00 sec)
    View Code

    由运行结果可以看出,字符串“hello”经过 REVERSE 函数处理之后所有字符顺序被反转,结果为“olleh”。

    INSTR函数:发现指定的字符的位置

    INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);

    STR 被搜索的字符串 
    SUBSTR 希望搜索的字符串

    在字符串STR里面,字符串SUBSTR出现的第一个位置(INDEX),INDEX是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。

    mysql> SELECT INSTR("abcd",'b'), INSTR("abcd",'f');
    +-------------------+-------------------+
    | INSTR("abcd",'b') | INSTR("abcd",'f') |
    +-------------------+-------------------+
    |                 2 |                 0 |
    +-------------------+-------------------+
    1 row in set (0.00 sec)
    View Code

    LOCATE函数:发现指定的字符的位置

    LOCATE(substr,str) , LOCATE(substr,str,pos)

    第一个语法返回字符串 str中子字符串substr的第一个出现位置。第二个语法返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

    mysql> SELECT LOCATE('def', 'abcdef'), LOCATE('xdef', 'abcdef'), LOCATE('def', 'abcdefghdef', 6);
    +-------------------------+--------------------------+---------------------------------+
    | LOCATE('def', 'abcdef') | LOCATE('xdef', 'abcdef') | LOCATE('def', 'abcdefghdef', 6) |
    +-------------------------+--------------------------+---------------------------------+
    |                       4 |                        0 |                               9 |
    +-------------------------+--------------------------+---------------------------------+
    1 row in set (0.00 sec)
    View Code

    POSITION函数:发现指定的字符的位置

    POSITION(substr IN str)

    返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0

    mysql> SELECT POSITION('def' in 'abcdef'), POSITION('xdef' in 'abcdef'), POSITION('def' in 'abcdefghdef');
    +-----------------------------+------------------------------+----------------------------------+
    | POSITION('def' in 'abcdef') | POSITION('xdef' in 'abcdef') | POSITION('def' in 'abcdefghdef') |
    +-----------------------------+------------------------------+----------------------------------+
    |                           4 |                            0 |                                4 |
    +-----------------------------+------------------------------+----------------------------------+
    1 row in set (0.00 sec)
    View Code
  • 相关阅读:
    <转>css选择器基本语法
    Pycharm错误提示
    Python继承Selenium2Library
    对于框架设计的一点总结
    <转>自动化框架设计思想
    svn检出项目报错
    eclipse查看jar包源文件
    plsql连接远程数据库快捷方式
    plsql过期注册
    hql语句cast用法
  • 原文地址:https://www.cnblogs.com/no-celery/p/13529694.html
Copyright © 2011-2022 走看看