给出如下形式的mysql查询:
SELECT *
FROM table
WHERE field1 LIKE '%foo%'
OR field2 LIKE '%bar%'
OR field3 LIKE '%foobar%'哪种方式是标记“匹配字段”的最佳方式?
例如:
+----+--------+--------+----------+
| ID | field1 | field2 | field3 |
+----+--------+--------+----------+
| 01 | foo | xxx | xxx |
+----+--------+--------+----------+
| 02 | xxx |12bar21 |xxfoobarxx|
+----+--------+--------+----------+
| 03 | f2o | bar | yxz |
+----+--------+--------+----------+在这里,每一个记录都会被匹配--现在我想知道每个记录匹配的字段。(所以对于ID 01是field1,对于ID 02是field2,field3,对于ID 03是field2)
谢谢
发布于 2018-11-20 05:40:30
使用 CONCAT和CASE
您正在寻找以下结果,但我知道您希望用逗号或任何其他符号分隔字段,因为我现在无法访问mysql,所以我认为您可以自己处理
SELECT *,
CONCAT(CASE WHEN field1 LIKE '%foo%' THEN 'field1' ELSE NULL END,
CASE WHEN field2 LIKE '%bar%' THEN 'field2' ELSE NULL END,
CASE WHEN field3 LIKE '%foobar%' THEN 'field3' ELSE NULL END) AS macthed_column
FROM youtable
WHERE field1 LIKE '%foo%'
OR field2 LIKE '%bar%'
OR field3 LIKE '%foobar%'输出
ID field1 field2 field3 macthed_column
1 foo xxx xxx field1
2 xxx 12bar21 xxfoobarxx field2field3
3 f2o bar yxz field2https://stackoverflow.com/questions/53386368
复制相似问题