Sql 类红移列值,带%

Sql 类红移列值,带%,sql,amazon-redshift,Sql,Amazon Redshift,我有一个列,它是一个逗号分隔的值字符串。我想加入另一个只有一个值的表。在红移时,如何在比较中插入“%”来执行LIKE运算符 例: 表A:values_col='abc,def' 表B:value_col='def' SELECT * FROM TableA a JOIN TableB b ON b.value_col LIKE '%' || a.values_col || '%' 上面的concat似乎不起作用。如有任何建议,将不胜感激。谢谢。你会有糟糕的表现。您应该修复数据结构。但如果必须这

我有一个列,它是一个逗号分隔的值字符串。我想加入另一个只有一个值的表。在红移时,如何在比较中插入“%”来执行LIKE运算符

例:

表A:values_col='abc,def'

表B:value_col='def'

SELECT *
FROM TableA a
JOIN TableB b ON b.value_col LIKE '%' || a.values_col || '%'

上面的concat似乎不起作用。如有任何建议,将不胜感激。谢谢。

你会有糟糕的表现。您应该修复数据结构。但如果必须这样做,那么这应该是可行的:

SELECT *
FROM TableA a JOIN
     TableB b
     ON ',' || a.values_col || ',' LIKE '%,' || b.value_col || ',%';

如果值可以相互包含,则逗号很重要。更重要的是,
需要正确的操作数顺序。

谢谢Gordon。您对数据结构有何建议?我应该将列表展平为n列,还是让它们成为不同的行?谢谢。@cvax。不应在分隔列表中存储多个值。每个值应该有一行。