mysql截取某个字符之前的内容做查询
引言
在数据库中,当我们需要根据字段中某个字符之前的内容来进行查询时,可以使用MySQL中的截取函数来实现。本文将详细介绍MySQL中常用的字符串截取函数,并给出一些应用场景的示例。
一、SUBSTRING函数
语法
SUBSTRING(str, start, length)
- str:要进行截取的源字符串。
- start:开始截取位置的索引(从1开始计算)。
- length:要截取的子字符串的长度。
示例
假设有如下员工表(employee):
+----+-----------+
| id | name |
+----+-----------+
| 1 | 张三 |
| 2 | 李四_部门A |
| 3 | 王五_部门B |
+----+-----------+
我们想要查询出名字中不包含部门信息的员工。可以使用SUBSTRING函数来截取’_’之前的内容,然后与’部门’拼接进行查询。
SELECT * FROM employee WHERE SUBSTRING(name, 1, POSITION('_' IN name) - 1) NOT LIKE '%部门';
查询结果为:
+----+------+
| id | name |
+----+------+
| 1 | 张三 |
+----+------+
二、SUBSTRING_INDEX函数
语法
SUBSTRING_INDEX(str, delimiter, count)
- str:要进行截取的源字符串。
- delimiter:截取的分隔符。
- count:指定截取的次数,正数表示从左往右截取,负数表示从右往左截取。
示例
假设有如下产品表(product):
+----+------------------+
| id | name |
+----+------------------+
| 1 | 苹果_iPhone X |
| 2 | 小米_Mi 11 |
| 3 | 华为_Mate 30 Pro |
+----+------------------+
我们希望查询出品牌为小米的产品。可以使用SUBSTRING_INDEX函数来截取’_’之前的内容,然后与’小米’进行比较。
SELECT * FROM product WHERE SUBSTRING_INDEX(name, '_', 1) = '小米';
查询结果为:
+----+------------------+
| id | name |
+----+------------------+
| 2 | 小米_Mi 11 |
+----+------------------+
三、LOCATE函数
语法
LOCATE(substr, str, start)
- substr:要在源字符串中查找的子字符串。
- str:源字符串。
- start:开始查找位置的索引(从1开始计算),可选。
示例
假设有如下订单表(order):
+----+--------------+
| id | order_number |
+----+--------------+
| 1 | 20181110001 |
| 2 | 20181110002 |
| 3 | 20181110003 |
+----+--------------+
我们希望查询出2018年11月10日的订单。可以使用LOCATE函数来查找’20181110’在order_number中的位置,并与start参数进行比较。
SELECT * FROM order WHERE LOCATE('20181110', order_number, 1) = 1;
查询结果为:
+----+--------------+
| id | order_number |
+----+--------------+
| 1 | 20181110001 |
| 2 | 20181110002 |
| 3 | 20181110003 |
+----+--------------+
四、REPLACE函数
语法
REPLACE(str, from_str, to_str)
- str:要进行替换的源字符串。
- from_str:要替换的内容。
- to_str:替换后的内容。
示例
假设有如下产品表(product):
+----+---------------+
| id | description |
+----+---------------+
| 1 | A款商品,特色 |
| 2 | B款产品,热卖 |
| 3 | C商品,限时折扣|
+----+---------------+
我们想要将所有的“商品”改为“产品”。可以使用REPLACE函数实现。
SELECT REPLACE(description, '商品', '产品') AS new_description FROM product;
查询结果为:
+-------------------+
| new_description |
+-------------------+
| A款产品,特色 |
| B款产品,热卖 |
| C产品,限时折扣 |
+-------------------+
结论
本文介绍了MySQL中常用的字符串截取函数:SUBSTRING、SUBSTRING_INDEX、LOCATE和REPLACE,并给出了相应的使用示例。通过使用这些函数,可以方便地对字段进行截取和替换操作,满足不同查询需求。