我有下表:
cs_id ; cs_values ; cs_desc
---------------------------
1; 'a,b,c'; 'one'
2; 'd,a'; 'two'
3; 'a,c'; 'three'
字段“cs_valies”包含不同的逗号分隔值。我想在“cs_values”中包含特定值的行上获取所有“cs_id”。
我用了这个表达式:
SELECT
cs_id,
regexp_split_to_table(cs_values, '* , *') as splitted_value
WHERE
splitted_value = 'a'
我有问题:
- Postgres 不喜欢
WHERE
子句中的别名。或者有人知道如何实现这一目标吗? - 有没有人有解决给定问题的更好主意?
谢谢大家 我希望我没有遗漏一些极其明显的东西。
最佳答案
Postgres does not like alias names in the WHERE-clause. Or has anyone an idea how to achieve this?
SELECT *
FROM (
SELECT
cs_id,
regexp_split_to_table(cs_values, '* , *') as splitted_value
) t
WHERE
splitted_value = 'a'
Does anyone have a better idea to solve the given problem?
规范化您的表格并将“逗号分隔列表”放入其自己的表格中。这是一个经典的 1:n 关系
关于postgresql - Postgres 在由 regexp_split_to_table 分割的列中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475550/