首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 第十章:MySQL高级应用与函数 #### 10.3 字符串函数 在MySQL中,字符串函数是一组用于处理文本数据的强大工具,它们允许开发者在查询过程中执行字符串的拼接、查找、替换、格式化等操作。这些函数对于处理用户输入、数据清洗、以及生成报告等场景尤为重要。本章将深入探讨MySQL中的字符串函数,帮助您更好地理解和利用这些功能。 ##### 10.3.1 基本字符串函数 **1. CONCAT()** `CONCAT()`函数用于将两个或多个字符串连接成一个字符串。如果任何一个参数为NULL,则返回NULL。 ```sql SELECT CONCAT('Hello', ' ', 'World') AS ConcatenatedString; -- 结果: Hello World ``` **2. CONCAT_WS()** `CONCAT_WS()`是`CONCAT()`的特殊形式,它允许你指定一个分隔符来连接多个字符串。第一个参数是分隔符,其余参数是待连接的字符串。 ```sql SELECT CONCAT_WS('-', '2023', '04', '01') AS DateString; -- 结果: 2023-04-01 ``` **3. LENGTH() 和 CHAR_LENGTH()** `LENGTH()`函数返回字符串的字节长度,而`CHAR_LENGTH()`或`CHARACTER_LENGTH()`函数返回字符串的字符数。对于多字节字符集(如UTF-8),两者可能返回不同的值。 ```sql SELECT LENGTH('Hello'), CHAR_LENGTH('Hello') AS CharLength; -- 结果可能依赖于字符集设置,但通常第一个为5,第二个也为5 SELECT LENGTH('你好'), CHAR_LENGTH('你好') AS CharLength; -- 在UTF-8下,第一个可能大于2(因为'你'和'好'可能各自占用多个字节),第二个为2 ``` **4. LOWER() 和 UPPER()** `LOWER()`函数将字符串中的所有字符转换为小写,而`UPPER()`函数则转换为大写。 ```sql SELECT LOWER('MySQL'), UPPER('MySQL') AS UpperMySQL; -- 结果: mysql MySQL ``` **5. TRIM()** `TRIM()`函数用于去除字符串两端的空格或其他指定的字符。默认情况下,它去除空格。 ```sql SELECT TRIM(' Hello World ') AS TrimmedString; -- 结果: Hello World SELECT TRIM(BOTH 'x' FROM 'xxxHello Worldxxx') AS TrimmedXString; -- 结果: Hello World ``` ##### 10.3.2 字符串查找与替换 **1. LOCATE()** `LOCATE(substr, str, pos)`函数用于查找子字符串`substr`在字符串`str`中的位置,从`pos`位置开始搜索。如果未找到,则返回0。 ```sql SELECT LOCATE('World', 'Hello World', 1) AS Position; -- 结果: 7 ``` **2. POSITION()** `POSITION(substr IN str)`函数是`LOCATE(substr, str)`的另一种写法,功能相同。 **3. INSTR()** `INSTR(str, substr)`函数返回子字符串`substr`在字符串`str`中第一次出现的位置。与`LOCATE()`不同的是,它的参数顺序是相反的。 **4. REPLACE()** `REPLACE(str, from_str, to_str)`函数将字符串`str`中所有的`from_str`替换为`to_str`。 ```sql SELECT REPLACE('Hello World', 'World', 'MySQL') AS ReplacedString; -- 结果: Hello MySQL ``` ##### 10.3.3 字符串格式化与操作 **1. SUBSTRING() 和 MID()** `SUBSTRING(str, pos, len)`和`MID(str, pos, len)`函数作用相同,用于从字符串`str`中提取从位置`pos`开始的长度为`len`的子字符串。如果省略`len`,则提取到字符串末尾。 ```sql SELECT SUBSTRING('Hello World', 1, 5) AS SubString; -- 结果: Hello ``` **2. LEFT() 和 RIGHT()** `LEFT(str, len)`函数返回字符串`str`最左边的`len`个字符,而`RIGHT(str, len)`则返回最右边的`len`个字符。 ```sql SELECT LEFT('Hello World', 5) AS LeftString, RIGHT('Hello World', 5) AS RightString; -- 结果: Hello rld ``` **3. LPAD() 和 RPAD()** `LPAD(str, len, pad_str)`和`RPAD(str, len, pad_str)`函数分别用于在字符串`str`的左边或右边填充字符,直到达到指定的长度`len`。`pad_str`是填充的字符串,如果`str`的长度已经等于或超过`len`,则不进行填充。 ```sql SELECT LPAD('123', 5, '0') AS LPadString, RPAD('123', 5, '0') AS RPadString; -- 结果: 00123 12300 ``` **4. REPEAT()** `REPEAT(str, count)`函数将字符串`str`重复`count`次。 ```sql SELECT REPEAT('MySQL', 3) AS RepeatedString; -- 结果: MySQLMySQLMySQL ``` **5. REVERSE()** `REVERSE(str)`函数将字符串`str`中的字符顺序反转。 ```sql SELECT REVERSE('Hello') AS ReversedString; -- 结果: olleH ``` ##### 10.3.4 字符串比较与排序 虽然字符串函数本身不直接涉及排序操作,但了解字符串的比较规则对于编写涉及字符串排序的查询至关重要。MySQL中的字符串比较是区分大小写的,这取决于字符集的校对规则(collation)。可以通过`COLLATE`关键字在查询中指定校对规则,以改变默认的字符串比较行为。 ```sql SELECT 'a' < 'A' COLLATE latin1_swedish_ci; -- 可能返回1,表示不区分大小写 SELECT 'a' < 'A' COLLATE utf8_bin; -- 返回0,表示区分大小写 ``` ##### 10.3.5 字符串函数的综合运用 字符串函数常常需要组合使用,以满足复杂的文本处理需求。通过嵌套函数调用,可以实现复杂的数据转换和格式化。例如,你可能需要先使用`TRIM()`去除字符串两端的空格,然后使用`CONCAT()`将处理后的字符串与其他文本拼接,最后使用`UPPER()`将结果转换为大写。 ```sql SELECT UPPER(CONCAT('User: ', TRIM(' John Doe '))) AS FormattedName; -- 结果: USER: JOHN DOE ``` #### 总结 MySQL的字符串函数为开发者提供了丰富的文本处理能力,无论是基本的字符串拼接、查找替换,还是高级的格式化与操作,都能通过这些函数轻松实现。掌握这些函数的使用,将极大地提升您在处理文本数据时的效率和灵活性。在实际应用中,根据具体需求选择合适的函数组合,能够解决各种复杂的文本处理任务。
上一篇:
10.2.7 SQRT(x)平方函数
下一篇:
10.3.1 INSERT(s1,x,len,s2)替换函数
该分类下的相关小册推荐:
MySQL从入门到精通(一)
MySQL从入门到精通(二)
MySQL从入门到精通(五)
SQL零基础到熟练应用(增删改查)
MySQL8.0入门与实践
细说MySQL(零基础到高级应用)
MySQL从入门到精通(四)
MySQL必会核心问题
MySQL 实战 45 讲