- - PR -
SQLで、全角文字をキャストして検索するとエラーが発生してしまいます。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-02-28 10:40
DB2のバージョン8を使用して、以下のSQLを実行しようとしたのですが、うまくいきません。 その理由を知りたいのですが、どなたかご存じないでしょうか。 SELECT MEMBER_NAME FROM M_MEMBER WHERE MEMBER_NAME LIKE VARGRAPHIC(CAST('%123456789%' AS VARCHAR(20))) (MEMBER_NAME列のデータ型はGRAPHICです。) エラーの内容としては、 SQLCODE=-191 SQLSTATE= 22504 となっており、エラーの説明は、 「MIXED データの形式が正しくない。 」 という事でした。 おそらくキャスト関数の入力値に誤りがあるのだろうと解釈し、いろいろ試したのですが、 以下の事が解っています。 ・検索条件の文字列を1文字短くすると動作する ・検索条件の文字列をこのままで、VARCHAR(20)をVARCHAR(22)とすると動作する。 キャスト関数の仕様を試してみようと思い、以下のSQLを実行してみました。 SELECT CAST('12' AS VARCHAR(4)) AS TEST_COL FROM M_MEMBER これも前述と同じエラーが発生したので、以下の事を確認しました。 ・検索条件の文字列を1文字短くすると動作する ・検索条件の文字列をこのままで、VARCHAR(4)をVARCHAR(6)とすると動作する。 つまり、全角文字をVARCHAR型にキャストする時に、何故か2バイト分増やしてキャスト しないといけないようだ、と判断しました。 しかし、このSQLは過去のDB2のバージョンでは正常に動作していたはずなのです。 納得がいかず、キャストの仕様が変わったのかと思い、以下のサイトで調べてみましたが、 今のところそういった情報が見つかっていません。 http://www-06.ibm.com/jp/software/data/developer/index.html どうしてこのようなことが起きるのか、ちゃんとした理由を知りたいと考えています。 どなたかご存知でしたら教えていただけないでしょうか。 |
1