当比较 CHAR 类型(CHAR、VARCHAR、LONG VARCHAR)和 NCHAR 类型(NCHAR、NVARCHAR、LONG NVARCHAR)的值时,SQL Anywhere 将使用推导规则来决定执行比较时所使用的类型。通常,如果一个值基于列引用而另一个值不是,则将以包含列引用的值的类型执行比较。
推导规则主要是判断一个值是否基于列引用建立。如果一个值是不基于列引用的变量、主机变量、文字常量或复杂表达式而另一个值基于列引用,则基于常量的值将隐式地转换为基于列的值的类型。
下面按适用顺序列出推导规则:
如果 NCHAR 值基于列引用,则 CHAR 将隐式地转换为 NCHAR,并以 NCHAR 执行比较。这包括 NCHAR 和 CHAR 都基于列引用的情况。
如果 NCHAR 值不基于列引用,但 CHAR 值基于列引用,则 NCHAR 值将隐式地转换为 CHAR,并且以 CHAR 执行比较。
如果您预计有 NCHAR 到 CHAR 的转换,考虑 on_charset_conversion_failure 选项的设置很重要,因为此选项控制不能在 CHAR 字符集中表示 NCHAR 字符时的行为。有关详细说明,请参见将 NCHAR 转换为 CHAR。
如果两者的值都不基于列引用,则 CHAR 将隐式地转换为 NCHAR,并以 NCHAR 执行比较。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |