字符串函数 === 字符串函数用于处理文本内容,例如计算长度、拼接字符串、替换内容、查找子串等。在用户名处理、格式化展示、模糊匹配和数据清洗场景中非常常见。 ### 计算字符串字符数和字符串长度的函数 MySQL 中常见的两个相关函数是: - `CHAR_LENGTH()`:返回字符个数 - `LENGTH()`:返回字节长度 示例: ```sql SELECT CHAR_LENGTH('mysql'); SELECT LENGTH('mysql'); SELECT CHAR_LENGTH('你好'); SELECT LENGTH('你好'); ``` 对于英文字符串,这两个函数的结果通常一致;但对于中文等多字节字符,`CHAR_LENGTH()` 和 `LENGTH()` 的结果可能不同。 ### 合并字符串函数 `CONCAT()` 用于合并多个字符串: ```sql SELECT CONCAT('My', 'SQL'); SELECT CONCAT('姓名:', '张三'); ``` 也可以用于拼接表字段: ```sql SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employee; ``` 这类函数经常用于生成展示文本、组合地址、拼接说明信息等。 ### 替换字符串的函数 `REPLACE()` 用于替换字符串中的指定内容。 ```sql SELECT REPLACE('I like MySQL', 'MySQL', 'MariaDB'); ``` 如果想批量处理表中的字符串内容,也可以这样使用: ```sql SELECT title, REPLACE(title, '旧版', '新版') AS new_title FROM article; ``` ### 比较字符串大小的函数 `STRCMP()` 用于比较两个字符串。 ```sql SELECT STRCMP('abc', 'abc'); SELECT STRCMP('abc', 'abd'); SELECT STRCMP('abd', 'abc'); ``` 通常返回: - `0`:两个字符串相等 - `-1`:第一个字符串小于第二个 - `1`:第一个字符串大于第二个 虽然在业务 SQL 中更常直接使用 `=`、`<>` 进行比较,但 `STRCMP()` 在一些显式比较场景中仍然有用。 ### 查找字符串的函数 常见的查找函数之一是 `INSTR()`,用于返回子串第一次出现的位置。 ```sql SELECT INSTR('hello mysql', 'mysql'); SELECT INSTR('hello mysql', 'world'); ``` 如果没有找到,通常返回 `0`。 它可以用来: - 判断某个子串是否存在 - 做简单位置分析 - 配合其他函数进行字符串处理 ### 小结 字符串函数是实际业务中使用最频繁的一类函数之一。常见高频函数包括 `CHAR_LENGTH()`、`LENGTH()`、`CONCAT()`、`REPLACE()` 和 `INSTR()`。