• MySQL: String 字符串相关函数整理


    所有函数

    函数描述
    ASCII返回特定字符的 ASCII 值
    CHAR_LENGTH / CHARACTER_LENGTH返回字符串的长度(以字符为单位)
    LENGTH返回字符串的长度(以字节为单位)
    CONCAT将两个或多个表达式加在一起
    CONCAT_WS使用分隔符将两个或多个表达式添加在一起
    FIELD返回值在值列表中的索引位置
    FIND_IN_SET返回字符串在字符串列表中的位置
    INSERT在字符串中的指定位置插入字符串,并插入一定数量的字符
    INSTR返回一个字符串在另一个字符串中第一次出现的位置
    LOCATE返回字符串中子字符串第一次出现的位置
    POSITION返回字符串中子字符串第一次出现的位置
    LPAD用另一个字符串向左填充一个字符串,达到一定的长度
    RPAD用另一个字符串右填充一个字符串到一定长度
    LTRIM从字符串中删除前导空格
    RTRIM从字符串中删除尾随空格
    TRIM从字符串中删除前导和尾随空格
    REPEAT按照指定的次数重复一个字符串
    REPLACE用新的子字符串替换字符串中所有出现的子字符串
    REVERSE反转一个字符串并返回结果
    SPACE返回指定空格数的字符串
    STRCMP比较两个字符串
    LEFT从字符串中提取多个字符(从左开始)
    RIGHT从字符串中提取多个字符(从右开始)
    MID / SUBSTR / SUBSTRING从字符串中提取子字符串(从任意位置开始)
    SUBSTRING_INDEX在出现指定数量的分隔符之前返回字符串的子字符串
    LCASE / LOWER将字符串转换为小写
    UCASE / UPPER将字符串转换为大写
    FORMAT将数字格式化为类似"#,###,###.##"的格式,四舍五入到指定的小数位数

    1、字符串属性

    ASCII

    返回特定字符的 ASCII 值

    语法

    ASCII(character)
    
    • 1
    mysql> SELECT ASCII("A");
    +------------+
    | ASCII("A") |
    +------------+
    |         65 |
    +------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    CHAR_LENGTH / CHARACTER_LENGTH

    返回字符串的长度(以字符为单位)

    语法

    CHAR_LENGTH(string)
    
    • 1
    mysql> SELECT CHAR_LENGTH("你好");
    +-----------------------+
    | CHAR_LENGTH("你好")   |
    +-----------------------+
    |                     2 |
    +-----------------------+
    
    mysql> SELECT CHARACTER_LENGTH("你好");
    +----------------------------+
    | CHARACTER_LENGTH("你好")   |
    +----------------------------+
    |                          2 |
    +----------------------------+
    
    mysql> SELECT CHAR_LENGTH("hello");
    +----------------------+
    | CHAR_LENGTH("hello") |
    +----------------------+
    |                    5 |
    +----------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    LENGTH

    返回字符串的长度(以字节为单位)

    语法

    LENGTH(string)
    
    • 1
    mysql> SELECT LENGTH("你好");
    +------------------+
    | LENGTH("你好")   |
    +------------------+
    |                6 |
    +------------------+
    
    mysql> SELECT LENGTH("hello");
    +-----------------+
    | LENGTH("hello") |
    +-----------------+
    |               5 |
    +-----------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2、字符串查找

    FIELD

    返回值在值列表中的索引位置

    语法

    FIELD(value, val1, val2, val3, ...)
    
    • 1
    mysql> SELECT FIELD("b", "a", "b", "c");
    +---------------------------+
    | FIELD("b", "a", "b", "c") |
    +---------------------------+
    |                         2 |
    +---------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    FIND_IN_SET

    返回字符串在字符串列表(逗号分隔)中的位置

    语法

    FIND_IN_SET(string, string_list)
    
    • 1
    mysql> SELECT FIND_IN_SET("b", "a,b,c");
    +---------------------------+
    | FIND_IN_SET("b", "a,b,c") |
    +---------------------------+
    |                         2 |
    +---------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    INSTR

    返回一个字符串在另一个字符串中第一次出现的位置,不区分大小写

    语法

    INSTR(string, substring)
    
    • 1
    mysql> SELECT INSTR("hello world", "world");
    +-------------------------------+
    | INSTR("hello world", "world") |
    +-------------------------------+
    |                             7 |
    +-------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    LOCATE

    返回字符串中子字符串第一次出现的位置,不区分大小写,找不到子字符串返回 0

    语法

    LOCATE(substring, string, start=1)
    
    • 1
    mysql> SELECT LOCATE("world", "hello world", 1);
    +-----------------------------------+
    | LOCATE("world", "hello world", 1) |
    +-----------------------------------+
    |                                 7 |
    +-----------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    POSITION

    返回字符串中子字符串第一次出现的位置,不区分大小写,找不到子字符串返回 0

    语法

    POSITION(substring IN string)
    
    • 1
    mysql> SELECT POSITION("world" IN "hello world");
    +------------------------------------+
    | POSITION("world" IN "hello world") |
    +------------------------------------+
    |                                  7 |
    +------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、字符串替换

    INSERT

    在字符串中的指定位置替换字符

    语法

    INSERT(string, position, number, string2)
    
    • 1
    -- 将 worl 替换为 man
    mysql> SELECT INSERT("hello world", 7, 4, "man");
    +------------------------------------+
    | INSERT("hello world", 7, 4, "man") |
    +------------------------------------+
    | hello mand                         |
    +------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    REPLACE

    将字符串中所有出现的子字符串替换为新的子字符串,区分大小写

    语法

    REPLACE(string, from_string, new_string)
    
    • 1
    mysql> SELECT REPLACE("hello", "e", "a");
    +----------------------------+
    | REPLACE("hello", "e", "a") |
    +----------------------------+
    | hallo                      |
    +----------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4、字符串处理

    CONCAT

    将两个或多个表达式相加

    语法

    CONCAT(expression1, expression2, expression3,...)
    
    • 1
    mysql> SELECT CONCAT("你好", "SQL", "世界");
    +-----------------------------------+
    | CONCAT("你好", "SQL", "世界")     |
    +-----------------------------------+
    | 你好SQL世界                       |
    +-----------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    CONCAT_WS

    将两个或多个表达式与分隔符相加

    语法

    CONCAT_WS(separator, expression1, expression2, expression3,...)
    
    • 1
    mysql> SELECT CONCAT_WS("-", "你好", "SQL", "世界");
    +-------------------------------------------+
    | CONCAT_WS("-", "你好", "SQL", "世界")     |
    +-------------------------------------------+
    | 你好-SQL-世界                             |
    +-------------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    FORMAT

    将数字四舍五入到指定的小数位数,然后将结果作为字符串返回。

    语法

    FORMAT(number, decimal_places)
    
    • 1
    mysql> SELECT FORMAT(250500.5634, 1);
    +------------------------+
    | FORMAT(250500.5634, 1) |
    +------------------------+
    | 250,500.6              |
    +------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    LCASE / LOWER

    将字符串转换为小写

    语法

    LCASE(text)
    
    • 1
    mysql> SELECT LCASE("HELLO");
    +----------------+
    | LCASE("HELLO") |
    +----------------+
    | hello          |
    +----------------+
    
    mysql> SELECT LOWER("HELLO");
    +----------------+
    | LOWER("HELLO") |
    +----------------+
    | hello          |
    +----------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    UCASE / UPPER

    将字符串转换为大写

    语法

    UCASE(text)
    
    UPPER(text)
    
    • 1
    • 2
    • 3
    mysql> SELECT UCASE("hello");
    +----------------+
    | UCASE("hello") |
    +----------------+
    | HELLO          |
    +----------------+
    
    mysql> SELECT UPPER("hello");
    +----------------+
    | UPPER("hello") |
    +----------------+
    | HELLO          |
    +----------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    LPAD

    用另一个字符串向左填充一个字符串,达到一定的长度。

    语法

    LPAD(string, length, lpad_string)
    
    • 1
    mysql> SELECT LPAD("hello", 20, "x");
    +------------------------+
    | LPAD("hello", 20, "x") |
    +------------------------+
    | xxxxxxxxxxxxxxxhello   |
    +------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    RPAD

    将一个字符串与另一个字符串右填充到一定长度。

    语法

    RPAD(string, length, rpad_string)
    
    • 1
    mysql> SELECT RPAD("hello", 20, "x");
    +------------------------+
    | RPAD("hello", 20, "x") |
    +------------------------+
    | helloxxxxxxxxxxxxxxx   |
    +------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    LTRIM

    从字符串中删除前导空格

    语法

    LTRIM(string)
    
    • 1
    mysql> SELECT LTRIM("  hello  ");
    +--------------------+
    | LTRIM("  hello  ") |
    +--------------------+
    | hello              |
    +--------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    RTRIM

    从字符串中删除尾随空格

    语法

    RTRIM(string)
    
    • 1
    mysql> SELECT RTRIM("  hello  ");
    +--------------------+
    | RTRIM("  hello  ") |
    +--------------------+
    |   hello            |
    +--------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    TRIM

    从字符串中删除前导和尾随空格

    语法

    TRIM(string)
    
    • 1
    mysql> SELECT TRIM("  hello  ");
    +-------------------+
    | TRIM("  hello  ") |
    +-------------------+
    | hello             |
    +-------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    REPEAT

    将字符串重复指定的次数

    语法

    REPEAT(string, number)
    
    • 1
    mysql> SELECT REPEAT("hello", 3);
    +--------------------+
    | REPEAT("hello", 3) |
    +--------------------+
    | hellohellohello    |
    +--------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    REVERSE

    反转字符串并返回结果

    语法

    REVERSE(string)
    
    • 1
    mysql> SELECT REVERSE("hello");
    +------------------+
    | REVERSE("hello") |
    +------------------+
    | olleh            |
    +------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    SPACE

    返回指定数量的空格字符的字符串

    语法

    SPACE(number)
    
    • 1
    mysql> SELECT SPACE(10);
    +------------+
    | SPACE(10)  |
    +------------+
    |            |
    +------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    STRCMP

    比较两个字符串

    语法

    STRCMP(string1, string2)
    
    • 1
    • 如果 string1 = string2,这个函数返回0
    • 如果 string1 < string2,这个函数返回-1
    • 如果 string1 > string2,这个函数返回1
    mysql> SELECT STRCMP("hello", "world");
    +--------------------------+
    | STRCMP("hello", "world") |
    +--------------------------+
    |                       -1 |
    +--------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5、字符串截取

    LEFT

    从字符串中提取多个字符(从左开始)

    语法

    LEFT(string, number_of_chars)
    
    • 1
    mysql> SELECT LEFT("hello world", 5);
    +------------------------+
    | LEFT("hello world", 5) |
    +------------------------+
    | hello                  |
    +------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    RIGHT

    从字符串中提取多个字符(从右开始)

    语法

    RIGHT(string, number_of_chars)
    
    • 1
    mysql> SELECT RIGHT("hello world", 5);
    +-------------------------+
    | RIGHT("hello world", 5) |
    +-------------------------+
    | world                   |
    +-------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    MID

    从字符串中提取子字符串(从任意位置开始)

    语法

    MID(string, start, length)
    
    • 1
    • start 可以是正数或负数
      • 正数,从字符串的开头提取
      • 负数,从字符串的末尾提取
    mysql> SELECT MID("hello world", 7, 5);
    +--------------------------+
    | MID("hello world", 7, 5) |
    +--------------------------+
    | world                    |
    +--------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    SUBSTR

    从字符串中提取子字符串(从任意位置开始)

    语法

    SUBSTR(string, start[, length])
    
    SUBSTR(string FROM start FOR length)
    
    • 1
    • 2
    • 3
    • start 可以是正数或负数
      • 正数,从字符串的开头提取
      • 负数,从字符串的末尾提取
    mysql> SELECT SUBSTR("hello world", 7);
    +--------------------------+
    | SUBSTR("hello world", 7) |
    +--------------------------+
    | world                    |
    +--------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    SUBSTRING

    从字符串中提取子字符串(从任意位置开始)

    语法

    SUBSTRING(string, start[, length])
    
    SUBSTRING(string FROM start FOR length)
    
    • 1
    • 2
    • 3
    • start 可以是正数或负数
      • 正数,从字符串的开头提取
      • 负数,从字符串的末尾提取
    mysql> SELECT SUBSTRING("hello world", 7);
    +-----------------------------+
    | SUBSTRING("hello world", 7) |
    +-----------------------------+
    | world                       |
    +-----------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    SUBSTRING_INDEX

    返回一个字符串在出现指定数量的分隔符之前的子字符串

    语法

    SUBSTRING_INDEX(string, delimiter, number)
    
    • 1
    • number 可以是正数或负数
      • 正数,返回所有到delimiter分隔符的左边
      • 负数,返回delimiter分隔符右边的所有
    -- number 取值正数
    mysql> SELECT SUBSTRING_INDEX("www.baidu.com", ".", 2);
    +------------------------------------------+
    | SUBSTRING_INDEX("www.baidu.com", ".", 2) |
    +------------------------------------------+
    | www.baidu                                |
    +------------------------------------------+
    
    -- number 取值负数
    mysql> SELECT SUBSTRING_INDEX("www.baidu.com", ".", -1);
    +-------------------------------------------+
    | SUBSTRING_INDEX("www.baidu.com", ".", -1) |
    +-------------------------------------------+
    | com                                       |
    +-------------------------------------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    参考文章

  • 相关阅读:
    Vim实用技巧_7.模式匹配和查找
    day22-bs4数据解析
    Mysql数据库日志的用法解读
    mybatis bean属性识别丢失【NoSuchPropertyException】
    【笔记】元素水平滑动(松手查看更多、滑动回弹)
    07_openstack之安全组与浮动IP
    OAuth2 的授权流程
    unigui添加ssl(https)访问的方法
    20省市公布元宇宙路线图
    3.9-Dockerfile实战
  • 原文地址:https://blog.csdn.net/mouday/article/details/134014894