如何通过在表 A 的列中查找逗号分隔值来从表 B 返回值

Posted

技术标签:

【中文标题】如何通过在表 A 的列中查找逗号分隔值来从表 B 返回值【英文标题】:How to return values from table B by looking up comma separated values in a column in table A 【发布时间】:2018-11-06 23:03:52 【问题描述】:

我不确定我的问题是否有意义,但我会在这里尝试解释一下。我有两张桌子

SAM (SR PK,CODE)CODE 列可能包含也可能不包含逗号分隔值。

FOO (CODE_VAL PK, CODE_DISP_TX)

我想写一个选择查询来给我 FOO WHERE SAM.SR = 3 的以下输出

【问题讨论】:

【参考方案1】:

修复您的数据模型!将列表存储为字符串是一个非常非常糟糕的主意。

有时,我们会被其他人非常非常糟糕的决定所困扰。你可以这样做:

select f.*
from foo f
where exists (select 1
              from sam s
              where ',' || code || ',' like '%,' || f.code || ',%'
             );

【讨论】:

谢谢,该表只有 5 个列表值,以后不会再添加,因此将这些值存储为列表。但我明白你在说什么。非常感谢!

以上是关于如何通过在表 A 的列中查找逗号分隔值来从表 B 返回值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据两个逗号分隔值的列中的任何一个值获取记录

如何在 Amazon Redshift 的列中取消嵌套/展开/展平逗号分隔值?

如何将逗号分隔的列值与另一个表作为行连接

通过连接来自不同列的逗号分隔值来创建字符串

包含逗号分隔值的列中的值

如何在csv列中使用逗号[重复]