Sql 在“中使用字符串值”;在;在Informix中
在Informix的数据库表中,我有如下列: 表名为Sql 在“中使用字符串值”;在;在Informix中,sql,informix,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的输出,其中key='1234'类似 "'POCO','LOCD',MACD'" 有没有
MYTABLE
键1234
值'POCO'、'LOCD',MACD'
现在我想在这样的查询中使用它
select * from table where symbol in (select value from MYTABLE where key='1234');
但此查询不起作用,因为值存储为char和
select value from MYTABLE的输出,其中key='1234'
类似
"'POCO','LOCD',MACD'"
有没有办法让这一切顺利进行。我想在一个查询中实现这一点
请建议一个更好的方法。你不能像那样插值。不能期望数据库优化人员知道
value
将返回一个类似于列表的字符串,该字符串将在列表上下文中进行解释
既然你要求更好的方法
这种设计打破了关于数据库应该如何构造的许多基本规则。“值”列至少应为集合
数据类型,以便正确阐明其作为值列表的作用。我个人会创建一个标准的关系桥接表:
MYTABLE
key col1 col2
1234 .. ..
MYVALUE
key value
1234 POCO
1234 LOCD
1234 MACD
这不是其他人建议的简单方法,但它是正确的答案。这是一个糟糕的设计-为什么不让
MYTABLE
为每个键包含多行,其中存储的值是您感兴趣的单独值?那么它将完全按照你写的那样工作。(其他未来的查询可能也会受益)是的,我知道它不是gud设计,但这是由其他人设计的。所以“MyTable”实际上不是您的表,而是其他人的表?有一个很好的理由让你讨厌任何东西的“我的”前缀。它假设单个用户完全不适当地使用。Hmmm。另一个有self-join和LIKE子句的答案现在似乎消失了。