• 締切済み

DB2でREPLACEによる文字列の置換

ODBC経由でPHPからDB2にアクセスしているのですが 電話番号から「-」を除いて比較しようとして 「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」 というSQL文を送信しても 「 *LIBLのタイプ*NのREPLACEが見つからない。 」 というエラーメッセージが返されます。 DB2にはREPLACE関数が存在しないのでしょうか? もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。 よろしくお願いします。

みんなの回答

  • rascal23
  • ベストアンサー率0% (0/0)
回答No.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エラーコードなど出てますか?

saintandre
質問者

お礼

とりあえずバージョンが古いと解釈することにしました。回答ありがとうございます。 解決はしていないためポイントはご容赦ください。

saintandre
質問者

補足

アドバイスありがとうございます。 エラーコードとメッセージは以下のようになってます。 エラーコード :S0002 メッセージ  :[IBM][iSeries Access ODBC ドライバー][DB2 UDB]SQL0204 - *LIBLのタイプ*NのREPLACEが見つからない。 おそらくDB2のバージョンが低くまだREPLACE関数が実装されていない可能性が高いです。 TRANSLATE関数を使ってなんとかならないかやってみましたが文字が詰まらないのでなんともなりませんでした。

関連するQ&A