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

これを機能させる方法はありますか?これを1つのクエリで実現したいと思います。

より良いアプローチを提案してください。

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 に答える