MySQL: String 字符串相关函数整理
  ndh0xMjNGcR6 2023年11月13日 18 0



目录

  • 所有函数
  • 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                                       |
+-------------------------------------------+

参考文章


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

ndh0xMjNGcR6