残念ながら、Advantage Database ServerTortureEditionバージョン8.1を使用しています。プロジェクトを終了した後、データベースは大文字と小文字を区別するように構成されていると聞きました。そこで、テーブル構造、すべてのCharデータ型をCICharに変更しました。これは、大文字と小文字を区別しないcharフィールドです。しかし、プログラムの実行中にこのエラーが発生します。
Advantage.Data.Provider.AdsException:
エラー7200:AQEエラー:状態= HY000; NativeError = 2214; [拡張システム][利点SQLエンジン]無効な強制:式の結果があいまいな文字タイプです。
ISNULL(myciChar、'')がこの問題を引き起こしていることがわかりましたが、なぜですか?どうすればこの問題を解決できますか?cicharデータ型に関する他の既知の問題はありますか?
どんな助けでもありがたいです。ありがとう。
[アップデート]
このエラーの理由を見つけました。明確にするために2つのポイントがありました。
- データベースのバージョンは8.1ですが、データアーキテクトのバージョンは7.1であり、ローカルモードではアーキテクトエンジンのバージョン7.1を使用します。これは、v7.1の問題であることを意味します。
- isnull関数の2番目のパラメーターは、バージョン7.1ではデフォルトで大文字と小文字を区別する照合ですが、私の列mytextはcicharであり、これはあいまいな文字タイプです。したがって、誰かが同じ問題を抱えている場合、v7.1ではcollate宣言を使用して機能します。
v7.1で動作します:
select myid, isnull(mytext, '-' COLLATE ads_default_ci) as mytext from mytable
v7.1のエラー:
select myid, isnull(mytext, '-') as mytext from mytable