带有 PG 的 Rails4 FIND_IN_SET 不工作

Rails4 FIND_IN_SET with PG not working

查询

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

我正在使用上面的查询从我的 table 'inboxes' 中访问记录,该查询具有列 'to' 值之一,例如 (2,4,6,7) 字符串,用逗号分隔.我在 pg 中使用 find_in_set 函数,但它显示了以下提示的错误。

Hint: No function matches the given name and argument types. You might need to add explicit type casts.

您可以在 Postgres 中使用数组模拟 MySQL 的 find_in_set() 函数。

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

注意to是保留关键字,需要用引号引起来"to"。通常,您不应将关键字保留为列名(或任何其他标识符)


但是您确实应该考虑修复您的数据模型。您的模型违反了第一范式,并且在很长一段时间内会给您带来更多麻烦 运行。最大的问题之一是您不能对存储在该字符串值中的值定义任何外键约束,或者您可以对数据强制执行任何其他约束。