1

询问

select * 
from inboxes 
where find_in_set ('6',inboxes.to);

上面的查询我用于访问我的表“收件箱”中的记录,该表具有以逗号分隔的 (2,4,6,7) 字符串等列“to”值之一。我在 pg 中使用 find_in_set 函数,但它通过以下提示向我显示错误。

提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

4

1 回答 1

2

find_in_set()您可以使用 Postgres 中的数组来模拟 MySQL 的功能。

select * 
from inboxes 
where '6' = any (string_to_array("to",','));

请注意,这to是一个保留关键字,因此需要被引用"to"。通常,您不应将关键字保留为列名(或任何其他标识符)


但是你真的应该考虑修复你的数据模型。你的模型违反了第一范式,从长远来看会给你带来更多的麻烦。最大的问题之一是您无法对存储在该字符串值中的值定义任何外键约束,或者您可以对数据强制执行任何其他约束。

于 2015-09-04T07:33:18.263 回答