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

目录

    • 所有函数
    • 1、字符串属性
      • ASCII
      • CHAR_LENGTH / CHARACTER_LENGTH
      • LENGTH
    • 2、字符串查找
      • FIELD
      • FIND_IN_SET
      • INSTR
      • LOCATE
      • POSITION
    • 3、字符串替换
      • INSERT
      • REPLACE
    • 4、字符串处理
      • CONCAT
      • CONCAT_WS
      • FORMAT
      • LCASE / LOWER
      • UCASE / UPPER
      • LPAD
      • RPAD
      • LTRIM
      • RTRIM
      • TRIM
      • REPEAT
      • REVERSE
      • SPACE
      • STRCMP
    • 5、字符串截取
      • LEFT
      • RIGHT
      • MID
      • SUBSTR
      • SUBSTRING
      • SUBSTRING_INDEX
    • 参考文章

所有函数

函数 描述
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)
mysql> SELECT ASCII("A");
+------------+
| ASCII("A") |
+------------+
|         65 |
+------------+

CHAR_LENGTH / CHARACTER_LENGTH

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

语法

CHAR_LENGTH(string)
mysql> SELECT CHAR_LENGTH("你好");
+-----------------------+
| CHAR_LENGTH("你好")   |
+-----------------------+
|                     2 |
+-----------------------+

mysql> SELECT CHARACTER_LENGTH("你好");
+----------------------------+
| CHARACTER_LENGTH("你好")   |
+----------------------------+
|                          2 |
+----------------------------+

mysql> SELECT CHAR_LENGTH("hello");
+----------------------+
| CHAR_LENGTH("hello") |
+----------------------+
|                    5 |
+----------------------+

LENGTH

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

语法

LENGTH(string)
mysql> SELECT LENGTH("你好");
+------------------+
| LENGTH("你好")   |
+------------------+
|                6 |
+------------------+

mysql> SELECT LENGTH("hello");
+-----------------+
| LENGTH("hello") |
+-----------------+
|               5 |
+-----------------+

2、字符串查找

FIELD

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

语法

FIELD(value, val1, val2, val3, ...)
mysql> SELECT FIELD("b", "a", "b", "c");
+---------------------------+
| FIELD("b", "a", "b", "c") |
+---------------------------+
|                         2 |
+---------------------------+

FIND_IN_SET

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

语法

FIND_IN_SET(string, string_list)
mysql> SELECT FIND_IN_SET("b", "a,b,c");
+---------------------------+
| FIND_IN_SET("b", "a,b,c") |
+---------------------------+
|                         2 |
+---------------------------+

INSTR

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

语法

INSTR(string, substring)
mysql> SELECT INSTR("hello world", "world");
+-------------------------------+
| INSTR("hello world", "world") |
+-------------------------------+
|                             7 |
+-------------------------------+

LOCATE

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

语法

LOCATE(substring, string, start=1)
mysql> SELECT LOCATE("world", "hello world", 1);
+-----------------------------------+
| LOCATE("world", "hello world", 1) |
+-----------------------------------+
|                                 7 |
+-----------------------------------+

POSITION

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

语法

POSITION(substring IN string)
mysql> SELECT POSITION("world" IN "hello world");
+------------------------------------+
| POSITION("world" IN "hello world") |
+------------------------------------+
|                                  7 |
+------------------------------------+

3、字符串替换

INSERT

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

语法

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

REPLACE

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

语法

REPLACE(string, from_string, new_string)
mysql> SELECT REPLACE("hello", "e", "a");
+----------------------------+
| REPLACE("hello", "e", "a") |
+----------------------------+
| hallo                      |
+----------------------------+

4、字符串处理

CONCAT

将两个或多个表达式相加

语法

CONCAT(expression1, expression2, expression3,...)
mysql> SELECT CONCAT("你好", "SQL", "世界");
+-----------------------------------+
| CONCAT("你好", "SQL", "世界")     |
+-----------------------------------+
| 你好SQL世界                       |
+-----------------------------------+

CONCAT_WS

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

语法

CONCAT_WS(separator, expression1, expression2, expression3,...)
mysql> SELECT CONCAT_WS("-", "你好", "SQL", "世界");
+-------------------------------------------+
| CONCAT_WS("-", "你好", "SQL", "世界")     |
+-------------------------------------------+
| 你好-SQL-世界                             |
+-------------------------------------------+

FORMAT

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

语法

FORMAT(number, decimal_places)
mysql> SELECT FORMAT(250500.5634, 1);
+------------------------+
| FORMAT(250500.5634, 1) |
+------------------------+
| 250,500.6              |
+------------------------+

LCASE / LOWER

将字符串转换为小写

语法

LCASE(text)
mysql> SELECT LCASE("HELLO");
+----------------+
| LCASE("HELLO") |
+----------------+
| hello          |
+----------------+

mysql> SELECT LOWER("HELLO");
+----------------+
| LOWER("HELLO") |
+----------------+
| hello          |
+----------------+

UCASE / UPPER

将字符串转换为大写

语法

UCASE(text)

UPPER(text)
mysql> SELECT UCASE("hello");
+----------------+
| UCASE("hello") |
+----------------+
| HELLO          |
+----------------+

mysql> SELECT UPPER("hello");
+----------------+
| UPPER("hello") |
+----------------+
| HELLO          |
+----------------+

LPAD

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

语法

LPAD(string, length, lpad_string)
mysql> SELECT LPAD("hello", 20, "x");
+------------------------+
| LPAD("hello", 20, "x") |
+------------------------+
| xxxxxxxxxxxxxxxhello   |
+------------------------+

RPAD

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

语法

RPAD(string, length, rpad_string)
mysql> SELECT RPAD("hello", 20, "x");
+------------------------+
| RPAD("hello", 20, "x") |
+------------------------+
| helloxxxxxxxxxxxxxxx   |
+------------------------+

LTRIM

从字符串中删除前导空格

语法

LTRIM(string)
mysql> SELECT LTRIM("  hello  ");
+--------------------+
| LTRIM("  hello  ") |
+--------------------+
| hello              |
+--------------------+

RTRIM

从字符串中删除尾随空格

语法

RTRIM(string)
mysql> SELECT RTRIM("  hello  ");
+--------------------+
| RTRIM("  hello  ") |
+--------------------+
|   hello            |
+--------------------+

TRIM

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

语法

TRIM(string)
mysql> SELECT TRIM("  hello  ");
+-------------------+
| TRIM("  hello  ") |
+-------------------+
| hello             |
+-------------------+

REPEAT

将字符串重复指定的次数

语法

REPEAT(string, number)
mysql> SELECT REPEAT("hello", 3);
+--------------------+
| REPEAT("hello", 3) |
+--------------------+
| hellohellohello    |
+--------------------+

REVERSE

反转字符串并返回结果

语法

REVERSE(string)
mysql> SELECT REVERSE("hello");
+------------------+
| REVERSE("hello") |
+------------------+
| olleh            |
+------------------+

SPACE

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

语法

SPACE(number)
mysql> SELECT SPACE(10);
+------------+
| SPACE(10)  |
+------------+
|            |
+------------+

STRCMP

比较两个字符串

语法

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

5、字符串截取

LEFT

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

语法

LEFT(string, number_of_chars)
mysql> SELECT LEFT("hello world", 5);
+------------------------+
| LEFT("hello world", 5) |
+------------------------+
| hello                  |
+------------------------+

RIGHT

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

语法

RIGHT(string, number_of_chars)
mysql> SELECT RIGHT("hello world", 5);
+-------------------------+
| RIGHT("hello world", 5) |
+-------------------------+
| world                   |
+-------------------------+

MID

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

语法

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

SUBSTR

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

语法

SUBSTR(string, start[, length])

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

SUBSTRING

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

语法

SUBSTRING(string, start[, length])

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

SUBSTRING_INDEX

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

语法

SUBSTRING_INDEX(string, delimiter, number)
  • 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                                       |
+-------------------------------------------+

参考文章

  • https://www.w3schools.cn/sql/sql_ref_mysql.html

你可能感兴趣的:(MySQL/SQL,1024程序员节,mysql,sql,数据库)