CHAR 型 (CHAR、VARCHAR、LONG VARCHAR) の値と NCHAR 型 (NCHAR、NVARCHAR、LONG NVARCHAR) の値との間で比較を実行する場合は、比較を実行する型を判断するために推定規則が使用されます。一般的に、一方の値のみがカラム参照に基づいている場合は、カラム参照が含まれている値の型を使用して比較が実行されます。
推定規則では、値がカラム参照に基づいているかどうかが重要です。一方の値が変数、ホスト変数、またはリテラル定数であるか、またはカラム参照に基づいていない複雑な式であり、かつもう一方の値がカラム参照に基づいている場合は、暗黙的に、定数に基づく値がカラムに基づく値にキャストされます。
次に、推定規則を適用順に示します。
NCHAR 値がカラム参照に基づいている場合は、暗黙的に CHAR 値が NCHAR にキャストされ、NCHAR として比較されます。NCHAR 値と CHAR 値の両方がカラム参照に基づいている場合も同様です。
NCHAR 値がカラム参照に基づいておらず、かつ CHAR 値がカラム参照に基づいている場合は、暗黙的に NCHAR 値が CHAR にキャストされ、CHAR として比較されます。
NCHAR から CHAR への変換が予想される場合は、on_charset_conversion_failure オプションの設定を検討することが重要です。このオプションでは、NCHAR 文字を CHAR 文字セットで表せないときの動作を制御するからです。
どちらの値もカラム参照に基づいていない場合、暗黙的に CHAR 値が NCHAR にキャストされ、NCHAR として比較されます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |