- 締切済み
DB2でREPLACEによる文字列の置換
ODBC経由でPHPからDB2にアクセスしているのですが 電話番号から「-」を除いて比較しようとして 「 SELECT * FROM TABLE WHERE REPLACE(TEL,'-','') = '09012345678' 」 というSQL文を送信しても 「 *LIBLのタイプ*NのREPLACEが見つからない。 」 というエラーメッセージが返されます。 DB2にはREPLACE関数が存在しないのでしょうか? もし存在しないのでしたら文字列を置換する関数は何を使えばよいのか教えて頂けないでしょうか。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- rascal23
- ベストアンサー率0% (0/0)
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関数を使ってなんとかならないかやってみましたが文字が詰まらないのでなんともなりませんでした。