我试图从一个返回用户名和标签(逗号分隔的数字)的视图中获取数据。现在我想得到一个用户,如果它有一个特定的标签。
我的视图返回如下:
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
2条答案
按热度按时间flvlnr441#
尝试下面的查询:-
gopyfrb32#
LIKE
可以在任何数据库中工作,但在PostgreSQL中,string_to_array是您的解决方案我假设你所有的标签都是整数。如果不是,则适应
text
。