在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'"
有没有办法让这项工作成功。我想在一个查询中实现这一点。
请建议更好的方法。
答案 0 :(得分:3)
您无法插入这样的值。不能指望数据库优化器知道value
将返回一个看起来像列表的字符串,该列表将在列表上下文中解释。
既然你要求更好的方法......
该设计打破了关于如何构建数据库的许多基本规则。 “值”列至少应为COLLECTION
数据类型,以便正确表达其作为值列表的角色。我个人会创建一个标准的关系桥接表:
MYTABLE
key col1 col2
1234 .. ..
MYVALUE
key value
1234 POCO
1234 LOCD
1234 MACD
这不是其他人建议的简单方法,但它是正确的答案。