postgresql 查询逗号分隔的数字

nkkqxpd9  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(2)|浏览(217)

我试图从一个返回用户名和标签(逗号分隔的数字)的视图中获取数据。现在我想得到一个用户,如果它有一个特定的标签。
我的视图返回如下:

id |  name  |        tags        
----+--------+--------------------
  1 | Albert | 1,2,3,4
  2 | Isaac  | 11,22,33,40,50
  3 | Marie  | 44,110,220,330,500
  4 | Ray    | 111,222,333

我想得到一个包含tag = 4的用户。当我尝试使用LIKE操作进行查询时,它返回多个用户。

select * from users
  where tags LIKE '%4%';

输出:

id |  name  |        tags        
----+--------+--------------------
  1 | Albert | 1,2,3,4
  2 | Isaac  | 11,22,33,40,50
  3 | Marie  | 44,110,220,330,500

期望输出:

id |  name  |        tags        
----+--------+--------------------
  1 | Albert | 1,2,3,4

我该如何解决这个问题?
在线Playground链接:https://onecompiler.com/postgresql/3zc7pfngm

flvlnr44

flvlnr441#

尝试下面的查询:-

SELECT *
FROM users
WHERE ',' || tags || ',' LIKE '%,4,%';
gopyfrb3

gopyfrb32#

LIKE可以在任何数据库中工作,但在PostgreSQL中,string_to_array是您的解决方案

select *
from users
where 4 = any(string_to_array(tags, ',')::int[]);

我假设你所有的标签都是整数。如果不是,则适应text

相关问题