1

在 Informix 的数据库表中,我有这样的列:

表名是MYTABLE

钥匙 1234

价值 'POCO','LOCD',MACD'

现在我想在这样的查询中使用它

select * from table where symbol in (select value from MYTABLE where key='1234');

但是此查询不起作用,因为值存储为 char 和

的输出select value from MYTABLE where key='1234'将类似于

"'POCO','LOCD',MACD'"

有没有办法使这项工作。我想在一个查询中实现这一点。

请提出更好的方法。

4

1 回答 1

3

你不能像这样插入值。不能期望数据库优化器知道value将返回一个看起来像列表的字符串,该字符串将在列表上下文中进行解释。

既然你要求更好的方法……</p>

这种设计打破了许多关于如何构建数据库的基本规则。至少,“值”列应该是一种COLLECTION数据类型,以便正确阐明其作为值列表的作用。我个人会创建一个标准的关系桥接表:

MYTABLE
key  col1 col2
1234 ..   .. 

MYVALUE
key  value
1234 POCO
1234 LOCD
1234 MACD

这不是其他人建议的简单方法,但它是正确的答案。

于 2013-01-10T11:31:05.460 回答