下表列出了 SQL Anywhere 和 UltraLite 远程数据类型与 Adaptive Server Enterprise 统一数据类型的映射关系。例如,远程数据库中类型为 LONG VARCHAR 的列对应统一数据库中的类型 TEXT。
最大列长度 (MCL) 取决于 Adaptive Server Enterprise 的页面大小。如果页面大小为 2K,则 MCL 为 1954;如果页面大小为 4K,则 MCL 为 4002。有关 MCL 的信息,请参见 Adaptive Server Enterprise 文档。
SQL Anywhere 或 UltraLite 数据类型 | Adaptive Server Enterprise 数据类型 | 注释 |
---|---|---|
BIGINT |
BIGINT |
|
BIT |
BIT |
|
BINARY(n=<MCL) |
BINARY(n) |
|
BINARY(n>MCL) |
IMAGE |
|
CHAR(n=<MCL) |
VARCHAR(n) |
|
CHAR(n>MCL) |
TEXT |
下载时,确保值不要过长。 |
DATE |
DATE |
对于 Adaptive Server Enterprise DATETIME,年份必须在 1753-9999 范围内。 对于 SQL Anywhere 和 UltraLite,时间值格式必须为 00:00:00。 |
DATETIME |
DATETIME1 或 BIGDATETIME2 |
Adaptive Server Enterprise DATETIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。 下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。 如果 DATETIME 用于主键,冲突解决可能会失败。为了成功同步 DATETIME,您应将小数秒舍入到 10 毫秒。此外,年份必须在 1753-9999 范围内。 |
DECIMAL(p<39, s) |
DECIMAL(p,s) |
Adaptive Server Enterprise NUMERIC 可以精确到 1 至 38 位数 (p<39)。 |
DECIMAL(p>=39,s) |
Adaptive Server Enterprise 中没有相应的数据类型。 |
|
DOUBLE |
DOUBLE PRECISION |
|
FLOAT(p) |
FLOAT(p) |
|
IMAGE |
IMAGE |
|
INTEGER |
INTEGER |
|
LONG BINARY |
IMAGE |
|
LONG NVARCHAR |
UNITEXT |
|
LONG VARBIT |
TEXT |
|
LONG VARCHAR |
TEXT |
|
MONEY |
MONEY |
|
NCHAR(c=<MCL) |
UNIVARCHAR(c/2) |
|
NCHAR(c>MCL) |
UNITEXT |
下载时,确保值不要过长。 |
NTEXT |
UNITEXT |
|
NUMERIC(p<39,s) |
NUMERIC(p,s) |
Adaptive Server Enterprise 的 DECIMAL 可以精确到 1 至 38 位数 (p<39)。 |
NUMERIC(p>=39,s) |
Adaptive Server Enterprise 中没有相应的数据类型。 |
|
NVARCHAR(c=<MCL) |
UNIVARCHAR(c/2) |
|
NVARCHAR(c>MCL) |
UNIVARCHAR(c/2) |
|
REAL |
REAL |
|
SMALLDATETIME |
DATETIME1 或 BIGDATETIME2 |
SQL Anywhere 和 UltraLite SMALLDATETIME 作为 TIMESTAMP 来实现。 Adaptive Server Enterprise DATETIME 精确到分钟。29.998 或更低的秒值将向下舍入为最接近的分钟;29.999 或更高的秒值将向上舍入为最接近的分钟。SQL Anywhere 或 UltraLite SMALLDATETIME 精确到微秒。为了成功地进行同步,SQL Anywhere 或 UltraLite SMALLDATETIME 必须舍入到分钟。此外,年份必须在 1753-9999 范围内。 |
SMALLINT |
SMALLINT |
|
SMALLMONEY |
SMALLMONEY |
|
TEXT |
TEXT |
|
TIME |
TIME1 或 BIGTIME2 |
Adaptive Server Enterprise TIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。下载时,SQL Anywhere 会保留 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。如果 TIME 用于主键,冲突解决可能会失败。为了成功同步 TIME,您应将小数秒舍入到 10 毫秒。 |
TIMESTAMP |
DATETIME1 或 BIGDATETIME2 |
Adaptive Server Enterprise DATETIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。 下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。 如果 DATETIME 用于主键,冲突解决可能会失败。为了成功同步 DATETIME,您应将小数秒舍入到 10 毫秒。此外,年份必须在 1753-9999 范围内。 |
TIMESTAMP WITH TIME ZONE | VARCHAR(34) | Adaptive Server Enterprise 中没有对等的数据类型。因此,TIMESTAMP WITH TIME ZONE 列应映射到 VARCHAR(34) 列。上载时,MobiLink 服务器首先使用格式 YYYY-MM-DD HH:NN:SS.SSSSSS [+|-]HH:NN 将数据转换为字符串,然后将其应用到统一数据库。下载时,它会将数据从字符串转换为 TIMESTAMP WITH TIME ZONE。请确保统一数据库中的数据遵从此格式,否则下载将失败。 |
TINYINT |
TINYINT |
|
UNIQUEIDENTIFIER |
CHAR(36) |
|
UNIQUEIDENTIFIERSTR |
CHAR(36) |
不使用 UNIQUEIDENTIFIERSTR。请改用 UNIQUEIDENTIFIER。 |
UNSIGNED BIGINT |
UNSIGNED BIGINT |
|
UNSIGNED INTEGER |
UNSIGNED INT |
|
UNSIGNED SMALLINT |
UNSIGNED SMALLINT |
|
UNSIGNED TINYINT |
TINYINT |
|
VARBINARY(n=<MCL) |
VARBINARY |
|
VARBINARY(n>MCL) |
IMAGE |
|
VARBIT(n=<MCL) |
VARCHAR(n) |
|
VARBIT(n>MCL) |
TEXT |
|
VARCHAR(n=<MCL) |
VARCHAR(n) |
|
VARCHAR(n>MCL) |
TEXT |
|
XML |
TEXT |
1 只适用于 15.5 版本之前的 Adaptive Server Enterprise。
2 只适用于 Adaptive Server Enterprise 版本 15.5 和更高版本。
下表列出了 Adaptive Server Enterprise 统一数据类型与 SQL Anywhere 和 UltraLite 远程数据类型的映射关系。例如,统一数据库中类型为 DOUBLE PRECISION 的列对应远程数据库中的类型 DOUBLE。
Adaptive Server Enterprise 数据类型 | SQL Anywhere 或 UltraLite 数据类型 | 注释 |
---|---|---|
BIGINT |
BIGINT |
|
BIGDATETIME1 |
TIMESTAMP |
|
BIGTIME1 |
TIME |
|
BINARY(n) |
BINARY(n) |
|
BIT |
BIT |
|
CHAR(n) |
VARCHAR(n) |
SQL Anywhere CHAR/NCHAR 和 Adaptive Server Enterprise CHAR/NCHAR 之间不存在对等关系。SQL Anywhere CHAR/NCHAR 与 VARCHAR/NVARCHAR 对等。不应在要同步的统一数据库列中使用 CHAR/NCHAR。如果必须使用非 SQL Anywhere CHAR/NCHAR,请用 -b 选项运行 MobiLink 服务器。 |
DATE |
DATE |
对于 SQL Anywhere 和 UltraLite,时间值格式必须为 00:00:00。 |
DATETIME |
DATETIME |
Adaptive Server Enterprise DATETIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6 之一。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。 下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。冲突解决可能会失败。为了成功同步 DATETIME,您应将小数秒舍入到 10 毫秒。此外,年份必须在 1753-9999 范围内。 |
DECIMAL(p,s) |
DECIMAL(p,s) |
|
DOUBLE PRECISION |
DOUBLE |
|
FLOAT(p) |
FLOAT(p) |
|
IMAGE |
LONG BINARY |
|
INT |
INT |
|
MONEY |
MONEY |
|
NCHAR(n) |
VARCHAR(n) |
与 SQL Anywhere NCHAR 和 NVARCHAR 不同,Adaptive Server Enterprise NCHAR 和 NVARCHAR 存储多字节本国字符串。在多字节环境中,使用 SQL Anywhere 或 UltraLite VARCHAR。 |
NUMERIC(p,s) |
NUMERIC(p,s) |
|
NVARCHAR(n) |
VARCHAR(n) |
与 SQL Anywhere NCHAR 和 NVARCHAR 不同,Adaptive Server Enterprise NCHAR 和 NVARCHAR 存储多字节本国字符串。在多字节环境中,使用 SQL Anywhere 或 UltraLite VARCHAR。 |
REAL |
REAL |
|
SMALLDATETIME |
SMALLDATETIME |
SQL Anywhere 和 UltraLite SMALLDATETIME 作为 TIMESTAMP 来实现。 Adaptive Server Enterprise SMALLDATETIME 精确到分钟。29.998 或更低的秒值将向下舍入为最接近的分钟;29.999 或更高的秒值将向上舍入为最接近的分钟。SQL Anywhere 或 UltraLite SMALLDATETIME 精确到微秒。为了成功地进行同步,SQL Anywhere 或 UltraLite SMALLDATETIME 必须舍入到分钟。此外,年份必须在 1900-2078 范围内。 |
SMALLINT |
SMALLINT |
|
SMALLMONEY |
SMALLMONEY |
|
TEXT |
LONG VARCHAR |
|
TIME |
TIME |
Adaptive Server Enterprise TIME 值精确到 1/300 秒。小数秒的最后一位数始终为 0、3 或 6 之一。其它数字将舍入为这三个数之一,即 0 和 1 舍入为 0,2、3 和 4 舍入为 3,5、6、7 和 8 舍入为 6,9 舍入为 10。 下载时,SQL Anywhere 会保持来自 Adaptive Server Enterprise 的原始值,但上载时,这些值可能与原始值不完全一致。冲突解决可能会失败。为了成功同步 TIME,建议您将小数秒舍入到 10 毫秒。 |
TIMESTAMP |
VARBINARY(8) |
在 Adaptive Server Enterprise 内,TIMESTAMP 是一个二进制计数器,它会随行的每一次更改而相应递增。因此,每个表只能包含一个 TIMESTAMP 列,并且对其进行同步没有任何意义。如果必须对其进行同步,请将其映射到 SQL Anywhere 或 UltraLite 中的 VARBINARY(8) 数据类型。 不能显式地插入或更新 TIMESTAMP 列,因为它由服务器进行维护。当您为含有这种列的表实现上载脚本时,请牢记这一点。 |
TINYINT |
TINYINT |
|
UNSIGNED BIGINT |
UNSIGNED BIGINT |
|
UNSIGNED INT |
UNSIGNED INT |
|
UNSIGNED SMALLINT |
UNSIGNED SMALLINT |
|
VARBINARY(n) |
VARBINARY(n) |
|
VARCHAR(n) |
VARCHAR(n) |
|
UNICHAR(n) |
NVARCHAR(n) |
在 UltraLite 中不可用。 |
UNITEXT |
LONG NVARCHAR |
在 UltraLite 中不可用。 |
UNIVARCHAR(n) |
NVARCHAR(n) |
在 UltraLite 中不可用。 |
1 只适用于 Adaptive Server Enterprise 版本 15.5 和更高版本。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |