sql - 从逗号分隔值搜索

标签 sql postgresql

我有包含 city_id 列的用户表,在此列中,城市 ID 存储为逗号分隔值,如下所示:

用户

user_id  user_name     city_id    
1        ahmar_arshad   1,2,3
2        abdul_muiz     15,2,9
3        abdul_momin    1,2,13

现在我想从 city_id 列中搜索包含城市 id = 1 的行。

如何实现?

最佳答案

这是一个通用的解决方案,应该适用于 Postgres:

SELECT *
FROM yourTable
WHERE ',' || city_id || ',' LIKE '%,1,%';

enter image description here

Demo

这里的技巧是比较表格中城市 ID 的 CSV 列表,例如,1,2,3,,ID,,其中 ID 可以是任何单独的城市 ID。

请注意,最好规范化您的表格并将这些城市 ID 存储在不同的记录中,而不是 CSV 字符串中。这将使查询数据变得更加容易,并且可能还会提高性能。

关于sql - 从逗号分隔值搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48375523/

相关文章:

sql - 从 SQL Server 中的一系列行中选择一行

sql - 我如何在 postgresql 中使用更新和 json 填充记录?

hibernate - Transctional readOnly=true & 在 Grails 和 Postgres 中保存对象

sql - 将运行 SQL 语句中未使用的 CTE

sql - Postgres : function accepting a hashmap or similar type as argument

sql - 如何获取日期格式(dd-MMM-yy HH :mm:ss) in SQL Server?

sql - 像 python 风格一样获取行

mysql - 如何在表中找不到数据时将计数设为 0?

java - Hibernate 不生成 id

postgresql - WSL2 和 Docker 桌面上的 Postgres 卷安装 : Permission Denied on PGDATA folder