好きなおでんの具材ドラフト会議しましょう

こんにちは
DB2 ver 8.1 fixPak5
VB6
にて開発を行っております。

TABLEa の NAMAEa KANKEIa
TABLEb の ADANAb FLAG
というテーブルがあるとします
そしてそれぞれのテーブルに
TABLEa のNAMAEa に '山田'
TABLEb のADANAb に '山'
というデータがはいっていたとき

この2つのデータをLIKE演算子のように結合させたいのですが、どのようにしたらいいのでしょうか。
イメージとしては

SELECT
NAMAEa, KANKEIa, FLAG
FROM TABLEa
LEFT OUTER JOIN
TABLEb
ON NAMAEa LIKE ADANAb%

伝わるでしょうか・・・
できたら1つのSQL文で完結させたいです。
駄目だったらRecordSetにもたせて処理しようかと思いますが、
今後の為にも何か方法があるのでしたら教えてください。

A 回答 (3件)

こんにちは。



マニュアルを確認してみました・・・。

LIKE演算子の右側には、まずString式が必要ですね・・・。
後は何をくっつけてもいいみたいです。
つまり、いきなり列名が来ているのがダメという事です。
ちなみにPOSSTR関数の場合は、検索される側は、列名でもOKですが・・・。

%列名%もダメですよねぇ。
なんかいい方法が思いつきません・・・。

※そもそも、なんでADANAbのテーブルにNAMAEaがないの???
リレーショナルになってないような・・・?
(^^ゞ

この回答への補足

ひょっとしたらそのようなことをできる機能・テクニック自体存在しないかもしれないので、すこししたら、質問閉じさせていただきます。
皆さんに時間を割かせすぎるのも申し訳ないので・・・

補足日時:2004/11/09 17:55
    • good
    • 0
この回答へのお礼

何回も回答ありがとうございます。
>※そもそも、なんでADANAbのテーブルにNAMAEaがないの???
>リレーショナルになってないような・・・?

実はADANAbのテーブルは他システムのデータをコンバートしたものを放り込んだテーブルなのです。
しかもそういうデータが定期的に送られてくる環境です。そういうこともあって、データが完全に結合できる状態ではないので、それを整えるちょっとしたツールを作ろうか、ということでこんなややこしいことになっています。。

oracleだったらinstr(a,b) > 0でいけるのに・・・
DB2だと私も思いつかないので質問してみました。

お礼日時:2004/11/09 17:51

ON NAMAEa LIKE ADANAb || '%'



こんな感じで、%は文字列としてADANAbにつなげてください。ただし、ADANAbが固定長文字列のフィールドでしたら余分なスペースを取る必要があるかもしれません。

#DB2の文字列結合演算子、||でしたっけ?
違ってたらごめんなさい。正しい演算子に置き換えてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
taka451213様のところにも書きましたが、うまくいきませんでした。
DB2の文字列結合は
||かCONCATですね。
どちらでもうまくいきませんでした。><

お礼日時:2004/11/09 16:58

こんにちは。



DB2って、マニュアル少ないんですよねぇ・・・。
多分それでいいと思いますよ。
NAMAEa LIKE (ADANAb || '%')
動かないかも・・・。
(^^ゞ
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私も実は試したんですが
「最初のオペランドがストリング式でないか、または 2番目のオペランドがストリングではないため、LIKE 述部、またはPOSSTR スカラー関数が無効です。SQLSTATE=42824」
と出て無効でした。列指定はできないみたいです。

上のエラーのように、POSSTR関数(oracleでいえばinstr?)でも試したんですが、結果同じでした。

お礼日時:2004/11/09 16:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報