gpt4 book ai didi

SQL查询以匹配多个字符串之一

转载 作者:行者123 更新时间:2023-11-29 11:16:49 25 4
gpt4 key购买 nike

我在表中有以下数据:

+----------------------+----------------------------------------------------------+--------------+
| subscriber_fields_id | name | field_type |
+----------------------+----------------------------------------------------------+--------------+
| 143 | Peshawar/Islamabad/Lahore/Swat/Mardan/Karachi | Job Location |
| 146 | Karachi | Job Location |
| 147 | Lahore and Karachi | Job Location |
| 149 | Karachi, Mirpur Khas, Sukkur, Layyah, Gilgit, Charsaddah | Job Location |
| 152 | Islamabad or Lahore | Job Location |
| 155 | Islamabad | Job Location |
| 157 | 7 Districts of Sindh and Karachi | Job Location |
+----------------------+----------------------------------------------------------+--------------+

我的查询是:

select * from subscriberfields
where name like '%Khairpur,Islamabad,Karachi%';

结果:

+----------------------+-----------------------------------------------+--------------+
| subscriber_fields_id | name | field_type |
+----------------------+-----------------------------------------------+--------------+
| 143 | Peshawar/Islamabad/Lahore/Swat/Mardan/Karachi | Job Location |
| 152 | Islamabad or Lahore | Job Location |
| 155 | Islamabad | Job Location |
+----------------------+-----------------------------------------------+--------------+

它应该返回名称包含 Islamabad、Khairpur 或 Karachi 但实际上没有的所有行。

最佳答案

要获得合适的解决方案,normalize your database design或者,除此之外,请考虑 full text search .

要快速解决手头的问题,请使用 regular expression match (~)或三个简单的 LIKE表达式:

SELECT *
FROM subscriberfields
WHERE name ~ '(Khairpur|Islamabad|Karachi)';

或者:

...
WHERE (name LIKE '%Khairpur%'
OR name LIKE '%Islamabad%'
OR name LIKE '%Karachi%')

或者使用~*或者ILIKE进行不区分大小写的匹配。

因为另一个答案建议它:从不使用SIMILAR TO:

关于SQL查询以匹配多个字符串之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28938905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com