在Informix中使用“IN”内的字符串值

时间:2013-01-10 08:39:46

标签: sql informix

在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'"

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

请建议更好的方法。

1 个答案:

答案 0 :(得分:3)

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

既然你要求更好的方法......

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

MYTABLE
key  col1 col2
1234 ..   .. 

MYVALUE
key  value
1234 POCO
1234 LOCD
1234 MACD

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