mysql---字符串函数

本文介绍了MySQL中常用的字符串处理函数,包括拼接(concat)、插入(insert)、大小写转换(lower、upper)、截取(left、right)、填充(lpad、rpad)、去除空白(ltrim、rtrim)、重复(repeat)、替换(replace)、比较(strcmp)、截取(substring)等,并通过实例展示了这些函数的具体应用。

1,concat

mysql> select concat('aaa', 'bbb', 'cccc'), concat('aaa', null);
+------------------------------+---------------------+
| concat('aaa', 'bbb', 'cccc') | concat('aaa', null) |
+------------------------------+---------------------+
| aaabbbcccc                   | NULL                |
+------------------------------+---------------------+
1 row in set (0.01 sec)

含有null的拼接返回null,否则直接拼接
2,insert

mysql> select insert('beijing2008', 8, 4, 'me');
+-----------------------------------+
| insert('beijing2008', 8, 4, 'me') |
+-----------------------------------+
| beijingme                         |
+-----------------------------------+
1 row in set (0.00 sec)

将beijing2008字符串从第八位后的四位字符串替换成me;
3,lower upper

mysql> select lower('Aaaaa');
+----------------+
| lower('Aaaaa') |
+----------------+
| aaaaa          |
+----------------+
1 row in set (0.00 sec)

mysql> select uper('Abplc');
ERROR 1305 (42000): FUNCTION user.uper does not exist
mysql> select upper('Abdasf');
+-----------------+
| upper('Abdasf') |
+-----------------+
| ABDASF          |
+-----------------+
1 row in set (0.00 sec)

lower 全部转成小写,upper 全部转成大写

4,left right

mysql> select left('beijing2008', 4), left('beijing2008', null), right('beijing2008', 4);
+------------------------+---------------------------+-------------------------+
| left('beijing2008', 4) | left('beijing2008', null) | right('beijing2008', 4) |
+------------------------+---------------------------+-------------------------+
| beij                   | NULL                      | 2008                    |
+------------------------+---------------------------+-------------------------+
1 row in set (0.00 sec)

left 显示字符串左边指定长度字符串, right显示字符串右边指定长度字符串
5,lpad, rpad

mysql> select lpad('2008',30,'beijing'), rpad('beijing',20,'2008');
+--------------------------------+---------------------------+
| lpad('2008',30,'beijing')      | rpad('beijing',20,'2008') |
+--------------------------------+---------------------------+
| beijingbeijingbeijingbeiji2008 | beijing2008200820082      |
+--------------------------------+---------------------------+
1 row in set (0.00 sec)

用beijing对2008左填充直到字符串长度为30,用2008对beijing右填充直到字符串长度为20;
6,ltrim,rtrim

mysql> select ltrim(' beijing | '), rtrim(' beijing | ');
+----------------------+----------------------+
| ltrim(' beijing | ') | rtrim(' beijing | ') |
+----------------------+----------------------+
| beijing |            |  beijing |           |
+----------------------+----------------------+
1 row in set (0.00 sec)

对beijing进行左侧去空格和右侧去空格
7,repeat

mysql> select repeat('beijing', 3);
+-----------------------+
| repeat('beijing', 3)  |
+-----------------------+
| beijingbeijingbeijing |
+-----------------------+
1 row in set (0.00 sec)

对beijing进行三次重复
8,replace

mysql> select replace('beijing_2010_2010', '2010', '2008');
+----------------------------------------------+
| replace('beijing_2010_2010', '2010', '2008') |
+----------------------------------------------+
| beijing_2008_2008                            |
+----------------------------------------------+
1 row in set (0.01 sec)

将所有的2010全部替换成2008
9,strcmp

mysql> select strcmp('a', 'b'), strcmp('b', 'a');
+------------------+------------------+
| strcmp('a', 'b') | strcmp('b', 'a') |
+------------------+------------------+
|               -1 |                1 |
+------------------+------------------+
1 row in set (0.00 sec)

用来比较字符串的ASSCII码大小,前者小于后者返回-1,相等返回0, 大于后者返回1
10,trim

mysql> select trim(' | beijing2008 |  ');
+----------------------------+
| trim(' | beijing2008 |  ') |
+----------------------------+
| | beijing2008 |            |
+----------------------------+
1 row in set (0.00 sec)

去掉字符串开头和结尾的空格
11,substring

mysql> select substring('beijing', 3, 8), substring('beijing', 3, 1);
+----------------------------+----------------------------+
| substring('beijing', 3, 8) | substring('beijing', 3, 1) |
+----------------------------+----------------------------+
| ijing                      | i                          |
+----------------------------+----------------------------+
1 row in set (0.00 sec)

提取beijing从3开始后的8个字符串和从3开始后的一个字符串

### MySQL函数的使用方法 MySQL 提供了丰富的内置函数以及支持用户自定义函数的能力。以下将详细介绍如何在 MySQL 中使用这些函数。 #### 内置函数 MySQL 的内置函数可以分为多个类别,包括聚合函数字符串函数、时间函数、算术函数以及其他函数[^1]。 - **聚合函数**:用于对一组值进行计算并返回单一结果。例如: ```sql SELECT COUNT(*) FROM employees; ``` 这里的 `COUNT(*)` 是一个聚合函数,用于统计表中记录的数量。 - **字符串函数**:用于操作和处理字符串数据。例如: ```sql SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees; ``` 这里的 `CONCAT` 函数用于将两个或多个字符串连接成一个字符串[^1]。 - **时间函数**:用于操作日期和时间数据。例如: ```sql SELECT NOW() AS current_time; ``` 这里的 `NOW()` 函数返回当前的日期和时间[^1]。 - **算术函数**:用于执行数学运算。例如: ```sql SELECT SQRT(16) AS square_root; ``` 这里的 `SQRT` 函数用于计算平方根。 #### 条件函数 MySQL 还提供了条件函数,如 `CASE` 表达式,用于根据条件返回不同的值。例如: ```sql SELECT CASE xfflag WHEN 1 THEN '结算账目' WHEN 2 THEN '消费账目' ELSE '类型不对' END AS account_type FROM transactions; ``` 这里的 `CASE` 表达式根据 `xfflag` 的值返回相应的描述[^2]。 #### 自定义函数 除了内置函数外,MySQL 还允许用户创建自定义函数(Stored Functions)。创建自定义函数的基本语法如下: ```sql DELIMITER $$ CREATE FUNCTION calculate_bonus(salary DECIMAL(10, 2), performance INT) RETURNS DECIMAL(10, 2) DETERMINISTIC BEGIN DECLARE bonus DECIMAL(10, 2); IF performance > 90 THEN SET bonus = salary * 0.2; ELSEIF performance > 70 THEN SET bonus = salary * 0.1; ELSE SET bonus = 0; END IF; RETURN bonus; END$$ DELIMITER ; ``` 这个例子中,`calculate_bonus` 是一个自定义函数,根据员工的薪资和绩效评分计算奖金。 ### 使用场景 在实际应用中,函数可以嵌套使用,也可以结合 SQL 查询语句一起使用,以实现复杂的数据处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值