プロが教えるわが家の防犯対策術!

ODBC経由でPHPからDB2にアクセスしているのですが

電話番号から「-」を除いて比較しようとして

「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」

というSQL文を送信しても

「 *LIBLのタイプ*NのREPLACEが見つからない。 」

というエラーメッセージが返されます。


DB2にはREPLACE関数が存在しないのでしょうか?

もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。



よろしくお願いします。

A 回答 (1件)

REPLACE関数は存在しています。


試しに以下のようなTableで同じようにselectしてみましたが、問題なくできました。

db2 => select * from TAB03

EMPNO NAME TEL
------ ------------------------ ---------------
111111 Aaaa Aaaaa 090-1111-2222
222222 Bbbb Bbbbb 090-2222-3333

2 レコードが選択されました。


db2 => select * from TAB03 where replace(TEL,'-','') = '09011112222'

EMPNO NAME TEL
------ ------------------------ ---------------
111111 Aaaa Aaaaa 090-1111-2222

1 レコードが選択されました。


SQLエラーコードなど出てますか?

この回答への補足

アドバイスありがとうございます。

エラーコードとメッセージは以下のようになってます。

エラーコード :S0002
メッセージ  :[IBM][iSeries Access ODBC ドライバー][DB2 UDB]SQL0204 - *LIBLのタイプ*NのREPLACEが見つからない。


おそらくDB2のバージョンが低くまだREPLACE関数が実装されていない可能性が高いです。
TRANSLATE関数を使ってなんとかならないかやってみましたが文字が詰まらないのでなんともなりませんでした。

補足日時:2006/04/24 08:52
    • good
    • 2
この回答へのお礼

とりあえずバージョンが古いと解釈することにしました。回答ありがとうございます。

解決はしていないためポイントはご容赦ください。

お礼日時:2006/05/28 14:37

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

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