我有桌子

raw TABLE
=========
id             class_ids
------------------------
1              1234,12334,12341,1228
2              12281,12341,12283
3              1234,34221,31233,43434,1123

如何定义regex以在类id包含特殊id时选择raws。
如果选择类id中'1234'的raws,则结果列表不应包含类id中'12341'的raws。
class_ids分隔的,列中的id
SELECT FROM raw re WHERE re.class_ids LIKE (regex)

最佳答案

不应将逗号分隔的值存储在单个列中。
但是,最好在Postgres中使用string_to_array()而不是regex:

SELECT *
FROM raw
WHERE '1234'= any(string_to_array(class_ids, ','));

如果您真的想反规范化数据,最好将这些数字存储在一个适当的整数数组中,而不是用逗号分隔的字符串列表

关于sql - 选择逗号分隔的字符串是否包含值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39700960/

10-11 07:58