当前位置: 首页 > article >正文

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

http://www.kler.cn/a/104083.html

相关文章:

  • SOLIDWORKS 2024新功能 3D CAD三维机械设计10大新功能
  • SQL INSERT INTO 语句(在表中插入)
  • mysql源码编译安装
  • 【Maven教程】(九):使用 Maven 进行测试 ~
  • JDBC连接参数配置
  • linux-文件系统
  • 一次js请求一般情况下有哪些地方会有缓存处理?
  • Python爬虫:ad广告引擎的模拟登录
  • Golang开发软件
  • 如何使用vim粘贴鼠标复制的内容
  • hugo-stack for github
  • SpringBoot集成Redis主从架构实现读写分离(哨兵模式)
  • 学习笔记二十四:K8S四层代理Service
  • 软件测试常用的8种功能测试类型有哪些?
  • 100 # mongoose 的使用
  • 如何阻止事件冒泡和默认事件
  • java8 Lambda表达式以及Stream 流
  • 【网安大模型专题10.19】论文3:ChatGPT+自协作代码生成+角色扮演+消融实验
  • Sui提供dApp Kit 助力快速构建React Apps和dApps
  • 密码学-SHA-1算法