查询
select *
from inboxes
where find_in_set ('6',inboxes.to);
以上查询我用来访问我的表'收件箱'中的记录,其中一列'到'的值如(2,4,6,7)字符串用逗号分隔。我在pg中使用了find_in_set函数,但它在下面的提示中显示了错误。
提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
答案 0 :(得分:2)
您可以使用Postgres中的数组模拟MySQL的find_in_set()
函数。
select *
from inboxes
where '6' = any (string_to_array("to",','));
请注意,to
是保留关键字,因此需要引用"to"
。通常,您不应将关键字保留为列名(或任何其他标识符)
但你应该真的考虑修复你的数据模型。您的模型违反了第一个正常形式,从长远来看会给您带来更多麻烦。最大的问题之一是您无法对存储在该字符串值中的值定义任何外键约束,或者您是否可以对数据强制执行任何其他约束。