SQL Anywhere 在对不是合法 XML 名称的名称(例如,包括空格的列名)进行编码时会使用以下规则:
XML 的名称规则与 SQL 名称规则不同。例如,XML 名称中不允许使用空格。在将 SQL 名称(如列名)转换为 XML 名称时,对于 XML 名称无效的字符将被编码或转义。
对于每个被编码的字符,编码是基于字符的 Unicode 代码点值(以十六进制形式表示)进行的。
对于大多数字符,可将代码点值表示为 16 位或 4 个十六进制数字(使用编码 _xHHHH_)。这些字符与 UTF-16 值为一个 16 位字的 Unicode 字符相对应。
对于代码点值所需位数超过 16 位的字符,将在编码 _xHHHHHHHH_ 中使用 8 个十六进制数字。这些字符与 UTF-16 值为两个 16 位字的 Unicode 字符相对应。但 Unicode 代码点值(通常为 5 或 6 个十六进制数字)用于编码,而非 UTF-16 值。
例如,以下查询包含带有空格的列名:
SELECT EmployeeID AS "Employee ID" FROM Employees FOR XML RAW; |
返回以下结果:
<row Employee_x0020_ID="102"/> <row Employee_x0020_ID="105"/> <row Employee_x0020_ID="129"/> <row Employee_x0020_ID="148"/> ... |
下划线 (_) 后如果跟有字符 x,就会被转义。例如,名称 Linu_x 将被编码为 Linu_x005F_x。
冒号 (:) 不会被转义,这样,使用 FOR XML 查询就可以生成命名空间声明和限定的元素名和属性名。
有关 FOR XML 子句的语法信息,请参见SELECT 语句。
在 Interactive SQL 中执行包含 FOR XML 子句的查询时,您可能会需要通过设置 truncation_length 选项来增加列的长度。
有关设置截断长度的信息,请参见truncation_length 选项 [Interactive SQL]。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |