MySQL 的 WHERE 条件中拆分字段再做查询
时间: 2023-11-11 14:03:21 浏览: 198
如果想在 MySQL 的 WHERE 条件中拆分字段再做查询,可以使用 SUBSTRING_INDEX 函数将字段拆分成多个部分。具体的做法如下:
假设有一个名为 `employee` 的表,其中包含 `full_name` 字段,需要查询 `full_name` 中包含 "John" 的所有记录。可以使用如下 SQL 语句:
```
SELECT * FROM employee WHERE SUBSTRING_INDEX(full_name, ' ', 1) = 'John';
```
其中,SUBSTRING_INDEX 函数将 `full_name` 字段按照空格分隔成多个部分,然后取第一个部分,即名字。如果名字是 "John",则返回该记录。
类似地,如果需要查询 `full_name` 中包含 "Doe" 的所有记录,可以使用如下 SQL 语句:
```
SELECT * FROM employee WHERE SUBSTRING_INDEX(full_name, ' ', -1) = 'Doe';
```
其中,SUBSTRING_INDEX 函数将 `full_name` 字段按照空格分隔成多个部分,然后取最后一个部分,即姓。如果姓是 "Doe",则返回该记录。
需要注意的是,如果 `full_name` 中包含多个空格,以上方法可能无法正确查询,可以考虑使用其他方法,比如正则表达式。
相关问题
mysql where条件内把字段拆分再做查询
如果想在 MySQL 的 WHERE 条件中拆分字段再做查询,可以使用 SUBSTRING_INDEX 函数将字段拆分成多个部分。具体的做法如下:
假设需要查询一个表中 name 字段的第一个词是 "John" 的所有记录,可以使用如下 SQL 语句:
```
SELECT * FROM table_name WHERE SUBSTRING_INDEX(name, ' ', 1) = 'John';
```
其中,SUBSTRING_INDEX 函数将 name 字段按照空格分隔成多个部分,然后取第一个部分,也就是第一个词。如果第一个词是 "John",则返回该记录。
类似地,如果需要查询 name 字段的第二个词是 "Doe" 的所有记录,可以使用如下 SQL 语句:
```
SELECT * FROM table_name WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1) = 'Doe';
```
其中,SUBSTRING_INDEX 函数先将 name 字段按照空格分隔成多个部分,然后取前两个部分(即第一个词和第二个词),再取第二个部分(即第二个词)。如果第二个词是 "Doe",则返回该记录。
mysql 根据逗号拆分字段为多行数据,并保留其他字段数据
可以使用 MySQL 的内置函数 SUBSTRING_INDEX 和 REPLACE 来实现将逗号拆分字段为多行数据,并保留其他字段数据的需求。具体实现代码如下:
SELECT
col1,
REPLACE(SUBSTRING_INDEX(col2, ',', n.digit+1), ',', '') AS split_col2,
col3
FROM
my_table
CROSS JOIN
(SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
WHERE
n.digit < LENGTH(col2) - LENGTH(REPLACE(col2, ',', '')) + 1;
其中,my_table 是你需要拆分的表名,col1 是需要保留的列,col2 是需要拆分的列,col3 是需要保留的列。
该 SQL 查询语句会将 col2 按照逗号进行拆分,并在拆分后的每个数据前加上原有的其他列数据,最终将拆分后的多行数据和其他保留列数据一并展示出来。
阅读全文