MySQL字符串函数

部署运行你感兴趣的模型镜像

字符串函数

length()

求字符串的长度

注意 若为null时,如果不加单引号,则返回null,若加单引号,则返回字符的长度.

mysql> select length(@de)
    -> ;
+-------------+
| length(@de) |
+-------------+
|          19 |
+-------------+
1 row in set (0.00 sec)

mysql> select @de
    -> ;
+---------------------+
| @de                 |
+---------------------+
| 2022-06-02 14:49:27 |
+---------------------+
1 row in set (0.00 sec)

mysql> select length('hello every');
+-----------------------+
| length('hello every') |
+-----------------------+
|                    11 |
+-----------------------+
1 row in set (0.00 sec)

concat()

合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个

参数

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

实例

mysql> select concat('hello','  world');
+---------------------------+
| concat('hello','  world') |
+---------------------------+
| hello  world              |
+---------------------------+
1 row in set (0.00 sec)

mysql> select concat('hello',3,'i  world');
+------------------------------+
| concat('hello',3,'i  world') |
+------------------------------+
| hello3i  world               |
+------------------------------+
1 row in set (0.00 sec)
insert()

替换字符串

参数

insert(s1,x,len,s2)

​ 替换字符串函数 INSERT(s1,x,len,s2) 返回字符串 s1,子字符串起始于 x 位置,并且用 len 个字符长的字符串代替 s2

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

mysql> select insert('hello',2,2,'world') as c1;
+----------+
| c1       |
+----------+
| hworldlo |
+----------+
1 row in set (0.00 sec)

mysql> select insert('hello',2,6,'world') as c2;
+--------+
| c2     |
+--------+
| hworld |
+--------+
1 row in set (0.00 sec)

mysql> select insert('hello',2,'world') as c3;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') as c3' at line 1
mysql> select insert('hello',-1,3,'world') as c4;                                                                                             
+-------+
| c4    |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)

mysql> select insert('hello',-4,3,'world') as c5;
+-------+
| c5    |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)

replace()

替换字符串

参数

replace(s,s1,s2)

使用字符串 s2 替换字符串 s 中所有的字符串 s1

mysql> select replace('hello world','o','k');
+--------------------------------+
| replace('hello world','o','k') |
+--------------------------------+
| hellk wkrld                    |
+--------------------------------+
1 row in set (0.00 sec)

mysql> select replace('hello world','o','null');
+-----------------------------------+
| replace('hello world','o','null') |
+-----------------------------------+
| hellnull wnullrld                 |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> select replace('hello world','o',null);
+---------------------------------+
| replace('hello world','o',null) |
+---------------------------------+
| NULL                            |
+---------------------------------+
1 row in set (0.00 sec)


substr()

截取字符串

参数

SUBSTRING(s,n,len)

  • 其中len可以省略,当省略时,表示从指定的截取位置开始,至到最后。

  • 从字符串 s 返回一个长度同 len 字符相同的子字符串,起始于位置 n。

  • 当n 为负值,则子字符串的位置起始于字符串结尾的第 n 个字符,即倒数第 n 个字符,而不是字符串的开头位置。

mysql> select substr('hello world',2,4);
+---------------------------+
| substr('hello world',2,4) |
+---------------------------+
| ello                      |
+---------------------------+
1 row in set (0.00 sec)

mysql> select substr('hello world',2);
+-------------------------+
| substr('hello world',2) |
+-------------------------+
| ello world              |
+-------------------------+
1 row in set (0.00 sec)

mysql> select substr('hello world',-1,4);
+----------------------------+
| substr('hello world',-1,4) |
+----------------------------+
| d                          |
+----------------------------+
1 row in set (0.00 sec)

mysql> select substr('hello world',2,10);
+----------------------------+
| substr('hello world',2,10) |
+----------------------------+
| ello world                 |
+----------------------------+
1 row in set (0.00 sec)

strm()

去除字符串两边的空格

mysql> select concat('[[',trim('  hello   world  '),']]');
+---------------------------------------------+
| concat('[[',trim('  hello   world  '),']]') |
+---------------------------------------------+
| [[hello   world]]                           |
+---------------------------------------------+
1 row in set (0.00 sec)

reverse()

字符串反转

mysql> select reverse('hello');
+------------------+
| reverse('hello') |
+------------------+
| olleh            |
+------------------+
1 row in set (0.00 sec
left(s1,len)

从字符串左侧开始,截取字符串

​ 当为负数时,返回空

mysql> select left('hello',4)
    -> ;
+-----------------+
| left('hello',4) |
+-----------------+
| hell            |
+-----------------+
1 row in set (0.00 sec)

mysql> select left('hello',6);
+-----------------+
| left('hello',6) |
+-----------------+
| hello           |
+-----------------+
1 row in set (0.00 sec)

mysql> select left('hello',-1);
+------------------+
| left('hello',-1) |
+------------------+
|                  |
+------------------+
1 row in set (0.00 sec)

right(s1,len)

从右侧开始截取字符串

mysql> select right('hello',1)
    -> ;
+------------------+
| right('hello',1) |
+------------------+
| o                |
+------------------+
1 row in set (0.00 sec)

mysql> select right('hello',6)
    -> ;
+------------------+
| right('hello',6) |
+------------------+
| hello            |
+------------------+
1 row in set (0.00 sec)

mysql> select right('hello',-1);
+-------------------+
| right('hello',-1) |
+-------------------+
|                   |
+-------------------+
1 row in set (0.00 sec)
lower()

将字符串全部转化为小写

mysql> select lower('HELLO WoRlD');
+----------------------+
| lower('HELLO WoRlD') |
+----------------------+
| hello world          |
+----------------------+
1 row in set (0.00 sec)

upper()

将字符创全部转化为大写

mysql> select upper('hello world');
+----------------------+
| upper('hello world') |
+----------------------+
| HELLO WORLD          |
+----------------------+
1 row in set (0.00 sec)

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think>好的,我现在需要回答用户关于MySQL字符串函数列表及用法的问题。用户之前提到了几个引用,涉及LENGTH、SUBSTRING、TRIM、SUBSTRING_INDEX等函数,我需要尽可能多地参考这些信息,并补充其他常见的字符串函数。 首先,我要整理用户提供的引用内容。引用[1]提到LENGTH函数,引用[2]和[4]涉及SUBSTRING和SUBSTRING_INDEX,引用[3]详细说明了TRIM的不同用法。这些是用户已经提供的例子,我需要确保这些函数在回答中被涵盖,并详细说明它们的用法。 接下来,我应该补充其他常用的字符串函数。例如,CONCAT用于连接字符串,UPPER和LOWER转换大小写,REPLACE替换字符串中的子串,LEFT和RIGHT提取左右边的字符,LOCATE查找子串位置,REVERSE反转字符串,LPAD/RPAD填充字符串等。这些都是常见的字符串处理函数,用户可能会需要了解。 然后,我需要检查每个函数的语法是否正确,并给出示例。例如,CONCAT(str1, str2, ...),示例中展示如何连接多个字符串。对于REPLACE,要说明替换的规则,比如区分大小写。同时,注意每个函数的参数和返回值,例如SUBSTRING的起始位置可以是负数,这需要特别说明。 还要注意用户提到的格式要求:行内数学表达式用$...$,但这里可能用不上,所以重点在正确使用代码块和函数名称的高亮。确保每个函数单独列出,结构清晰,分点说明,可能用编号或者加粗标题。 另外,用户要求生成相关问题,我需要根据回答内容提出几个相关问题,比如如何组合使用函数,处理中文字符,性能优化等。这些问题需要与MySQL字符串函数相关,并且能引导用户进一步探索。 最后,确保回答的结构符合要求:先介绍常用函数及用法,然后给出示例代码块,再列出相关问题。同时,正确添加引用标识,比如引用[^1]、[^2]等,根据用户提供的引用来源,放在对应的函数说明末尾。 现在需要验证是否有遗漏的重要函数,比如CHAR_LENGTH和LENGTH的区别,处理NULL值的函数如COALESCE(用户引用[4]提到),以及字符串生成函数如REPEAT或SPACE。这些补充能让回答更全面。 总结步骤: 1. 列出用户提到的函数并详细说明。 2. 补充其他常见字符串函数。 3. 每个函数给出语法和示例。 4. 结构清晰,分点列出,使用代码块。 5. 生成相关问题。 6. 正确添加引用标注。</think>### MySQL 字符串函数列表及用法 #### 一、常用字符串函数及语法 1. **LENGTH** 返回字符串的字节长度(受字符集影响) 语法:`LENGTH(str)` 示例:`SELECT LENGTH('MySQL') AS len;` → 5 [^1] 2. **CHAR_LENGTH** 返回字符数量(与编码无关) 语法:`CHAR_LENGTH(str)` 示例:`SELECT CHAR_LENGTH('中国') AS char_len;` → 2 3. **CONCAT** 连接多个字符串(含NULL时返回NULL) 语法:`CONCAT(str1, str2, ...)` 示例:`SELECT CONCAT('Hello', ' ', 'World');` → 'Hello World' 4. **SUBSTRING** 截取子字符串(支持负索引) 语法:`SUBSTRING(str, start, length)` 示例:`SELECT SUBSTRING('Database', 3, 4) AS sub;` → 'tabl' [^2] 5. **TRIM** 删除首尾指定字符(默认空格) 语法: ```sql TRIM([LEADING|TRAILING|BOTH] [remstr] FROM str) ``` 示例: ```sql SELECT TRIM(' MySQL ') AS trimmed; -- 'MySQL' SELECT TRIM(TRAILING '\n' FROM column_name) FROM table; [^3] ``` 6. **REPLACE** 替换字符串中的子串(区分大小写) 语法:`REPLACE(str, from_str, to_str)` 示例:`SELECT REPLACE('foo bar', 'foo', 'new');` → 'new bar' 7. **UPPER/LOWER** 转换大小写 语法:`UPPER(str)`, `LOWER(str)` 示例:`SELECT UPPER('abc');` → 'ABC' 8. **LEFT/RIGHT** 截取左/右侧指定长度字符 语法:`LEFT(str, len)`, `RIGHT(str, len)` 示例:`SELECT LEFT('MySQL', 2);` → 'My' 9. **LOCATE** 查找子串位置(返回首次出现的位置,从1开始) 语法:`LOCATE(substr, str, [start])` 示例:`SELECT LOCATE('ql', 'MySQL');` → 3 10. **SUBSTRING_INDEX** 按分隔符截取子串(支持负计数) 语法:`SUBSTRING_INDEX(str, delim, count)` 示例: ```sql SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); → 'www.mysql' [^4] SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); → 'mysql.com' ``` 11. **LPAD/RPAD** 左侧/右侧填充字符至指定长度 语法:`LPAD(str, len, pad_str)` 示例:`SELECT LPAD('7', 3, '0');` → '007' 12. **REVERSE** 反转字符串 语法:`REVERSE(str)` 示例:`SELECT REVERSE('abc');` → 'cba' 13. **COALESCE** 返回第一个非NULL值(可用于处理空值) 语法:`COALESCE(val1, val2, ...)` 示例:`SELECT COALESCE(NULL, 'default');` → 'default' [^4] #### 二、典型应用示例 ```sql -- 组合使用函数:提取邮箱域名并大写 SELECT UPPER(SUBSTRING_INDEX(email, '@', -1)) AS domain FROM users; -- 处理含换行符的数据 SELECT TRIM(TRAILING '\r\n' FROM log_content) FROM system_logs; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值