下表列出了 SQL Anywhere 和 UltraLite 远程数据类型与 Oracle 统一数据类型的映射关系。例如,远程数据库中类型为 BIT 的列对应统一数据库中的类型 NUMBER。
SQL Anywhere 或 UltraLite 数据类型 | Oracle 数据类型 | 注意 |
---|---|---|
BIGINT |
NUMBER(20) |
|
BINARY(n<=2000) |
RAW(n) |
|
BINARY(n>2000) |
BLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
BIT |
NUMBER(1) |
|
CHAR(n<=4000) |
VARCHAR2(n byte) |
Oracle VARCHAR2 允许您指定最大字节或字符数。VARCHAR2 数据的最大长度为 4000 字节。如果指定字符数,请确保数据的最大长度不超过 4000 字节。 |
CHAR(n>4000) |
CLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
DATE |
DATE2 或 TIMESTAMP |
使用没有小数秒的 Oracle DATE 数据类型时,将不会保留 SQL Anywhere 或 UltraLite 小数秒。要避免出现问题,请不要使用小数秒。年份必须在 1-9999 范围内。 使用 Interactive SQL 实用程序时,请先关闭 Return_date_time_as_string 选项,然后再执行 SQL 语句。 |
DATETIME |
DATE2 或 TIMESTAMP |
使用没有小数秒的 Oracle DATE 数据类型时,将不会保留 SQL Anywhere 或 UltraLite 小数秒。要避免出现问题,请不要使用小数秒。年份必须在 1-9999 范围内。 使用 Interactive SQL 实用程序时,请先关闭 Return_date_time_as_string 选项,然后再执行 SQL 语句。 |
DECIMAL(p<=38,s) |
NUMBER(p, 0<=s<=38) |
在 SQL Anywhere DECIMAL 中,p 介于 1 到 127 之间,s 始终小于或等于 p。在 Oracle NUMBER 中,p 的范围从 1 到 38,s 的范围从 -84 到 127。为了进行同步,Oracle NUMBER 的数值范围必须限制在 0 和 38 之间。 |
DECIMAL(p>38,s) |
Oracle 中没有相应的数据类型。 |
|
DOUBLE |
DOUBLE PRECISION 或 BINARY_DOUBLE1 |
Oracle 数据库 10g BINARY_FLOAT 和 BINARY_DOUBLE 的特殊值 INF、-INF 和 NAN 不能与 SQL Anywhere 或 UltraLite 同步。 |
FLOAT(p) |
FLOAT(p) |
|
IMAGE |
BLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
INTEGER |
INT |
|
LONG BINARY |
BLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
LONG NVARCHAR |
NCLOB |
Oracle CLOB 和 NCLOB 最多可以保存 4G 数据。SQL Anywhere LONG VARCHAR 和 LONG NVARCHAR 只能保存最多 2G 数据。 Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
LONG VARBIT |
CLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
LONG VARCHAR |
CLOB |
Oracle CLOB 和 NCLOB 最多可以保存 4G 数据。SQL Anywhere LONG VARCHAR 和 LONG NVARCHAR 只能保存最多 2G 数据。 Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
MONEY |
NUMBER(19,4) |
|
NCHAR(c) |
NVARCHAR2(c char) 或 NCLOB |
SQL Anywhere NCHAR 和 Oracle NVARCHAR2 的大小表示 Unicode 字符的最大数目。Oracle NVARCHAR2 的数据长度不能超过 4000 字节。很难通过字符大小计算出最大字节长度。通常,如果字符大小超过 1000,则映射到 NCLOB,否则映射到 NVARCHAR2。 |
NTEXT |
NCLOB |
Oracle NCLOB 最多可以保存 4G 数据。SQL Anywhere NTEXT(或 LONG NVARCHAR)最多只能保存 2G 数据。 Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
NUMERIC(p<=38,s) |
NUMBER(p, 0<=s<=38) |
在 SQL Anywhere NUMERIC 中,p 在 1 到 127 之间,而 s 始终小于或等于 p。在 Oracle NUMBER 中,p 的范围是从 1 到 38,而 s 的范围是从 -84 到 127。要进行同步,Oracle NUMBER 的数值范围必须限制在 0 到 38 之间。 |
NUMERIC(p>38,s) |
Oracle 中没有相应的数据类型。 |
|
NVARCHAR |
NVARCHAR2(c char) 或 NCLOB |
SQL Anywhere NCHAR 和 Oracle NVARCHAR2 的大小表示 Unicode 字符的最大数目。Oracle NVARCHAR2 的数据长度不能超过 4000 字节。很难通过字符大小计算出最大字节长度。通常,如果字符大小超过 1000,则映射到 NCLOB,否则映射到 NVARCHAR2。 |
REAL |
REAL 或 BINARY_FLOAT1 |
Oracle 数据库 10g BINARY_FLOAT 和 BINARY_DOUBLE 的特殊值 INF、-INF 和 NAN 不能与 SQL Anywhere 或 UltraLite 同步。 |
SMALLDATETIME |
DATE2 或 TIMESTAMP |
使用没有小数秒的 Oracle DATE 数据类型时,将不会保留 SQL Anywhere 或 UltraLite 小数秒。要避免出现问题,请不要使用小数秒。年份必须在 1-9999 范围内。 |
SMALLINT |
NUMBER(5) |
|
SMALLMONEY |
NUMBER(10,4) |
|
TEXT |
CLOB |
Oracle CLOB 最多可以保存 4G 数据。SQL Anywhere TEXT(或 LONG VARCHAR)最多只能保存 2G 数据。 Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
TIME |
DATE2 或 TIMESTAMP |
使用没有小数秒的 Oracle DATE 数据类型时,将不会保留 SQL Anywhere 或 UltraLite 小数秒。要避免出现问题,请不要使用小数秒。 使用 Interactive SQL 实用程序时,请先关闭 Return_date_time_as_string 选项,然后再执行 SQL 语句。 |
TIMESTAMP |
DATE2 或 TIMESTAMP |
使用没有小数秒的 Oracle DATE 数据类型时,将不会保留 SQL Anywhere 或 UltraLite 小数秒。要避免出现问题,请不要使用小数秒。年份必须在 1-9999 范围内。 使用 Interactive SQL 实用程序时,请先关闭 Return_date_time_as_string 选项,然后再执行 SQL 语句。 |
TIMESTAMP WITH TIME ZONE | TIMESTAMP WITH TIME ZONE | |
TINYINT |
NUMBER(3) |
对于下载,Oracle 值必须是非负数。 |
UNSIGNED BIGINT |
NUMBER(20) |
对于下载,Oracle 值必须是非负数。 |
UNSIGNED INTEGER |
NUMBER(11) |
对于下载,Oracle 值必须是非负数。 |
UNSIGNED SMALLINT |
NUMBER(5) |
对于下载,Oracle 值必须是非负数。 |
UNSIGNED TINYINT |
NUMBER(3) |
对于下载,Oracle 值必须是非负数。 |
UNIQUEIDENTIFIER |
CHAR(36) |
|
UNIQUEIDENTIFIERSTR |
CHAR(36) |
建议不要将 UNIQUEIDENTIFIERSTR 用于 Oracle。请改用 UNIQUEIDENTIFIER。 |
VARBINARY(n<=2000) |
RAW(n) |
|
VARBINARY(n>2000) |
BLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
VARBIT(n<=4000) |
VARCHAR2(n byte) |
|
VARBIT(n>4000) |
CLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
VARCHAR(n<=4000) |
VARCHAR2(n byte) |
Oracle VARCHAR2 允许您指定最大字节或字符数。VARCHAR2 数据的最大长度为 4000 字节。如果指定字符数,请确保数据的最大长度不超过 4000 字节。 |
VARCHAR(n>4000) |
CLOB |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
XML |
CLOB |
Oracle CLOB 和 NCLOB 最多可以保存 4G 数据。SQL Anywhere XML 最多只能保存 2G 数据。 Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
1 仅适用于 Oracle 数据库 10g 或更高版本。
2 仅适用于 Oracle 版本 8i。
Oracle 8、8i 和 9i 中不再支持 LONG 数据类型。
下表列出了 Oracle 的统一数据类型与 SQL Anywhere 或 UltraLite 远程数据类型的映射关系。例如,统一数据库中的类型为 LONG 的列对应远程数据库中的类型 LONG VARCHAR。
Oracle 数据类型 | SQL Anywhere 或 UltraLite 数据类型 | 注意 |
---|---|---|
BFILE |
LONG BINARY |
仅下载。 Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
BINARY_DOUBLE |
DOUBLE |
BINARY_FLOAT 的特殊值 INF、-INF 和 NAN 不能与 SQL Anywhere 或 UltraLite 同步。FLOAT 和 DOUBLE 的精度在 Oracle 中与在 SQL Anywhere 和 UltraLite 中不同。数据的值可能依据精度而更改。 |
BINARY_FLOAT |
REAL |
BINARY_FLOAT 的特殊值 INF、-INF 和 NAN 不能与 SQL Anywhere 或 UltraLite 同步。FLOAT 和 DOUBLE 的精度在 Oracle 中与在 SQL Anywhere 和 UltraLite 中不同。数据的值可能依据精度而更改。 |
BLOB |
LONG BINARY |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
CHAR(n byte) |
VARCHAR(n) |
SQL Anywhere CHAR 和 Oracle CHAR 之间不存在对等关系。SQL Anywhere CHAR 与 VARCHAR 对等。不应在要同步的统一数据库列中使用 CHAR/NCHAR。如果必须使用非 SQL Anywhere CHAR,请用 -b 选项运行 MobiLink 服务器。 SQL Anywhere 或 UltraLite 值可以长于 Oracle 值,因此上载时请确保值不要太大。 |
CLOB |
LONG VARCHAR |
Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
DATE |
TIMESTAMP |
年份必须在 1-9999 范围内。 |
INTERVAL YEAR(year_precision) TO MONTH |
在 SQL Anywhere 或 UltraLite 中没有相应的数据类型。 |
|
INTERVAL DAY(day_precision) TO SECOND(p) |
在 SQL Anywhere 或 UltraLite 中没有相应的数据类型。 |
|
LONG |
LONG VARCHAR |
|
LONG RAW |
LONG BINARY |
|
NCHAR(c char) |
NVARCHAR(c) |
SQL Anywhere NCHAR 和 Oracle NCHAR 之间不存在对等关系。SQL Anywhere NCHAR 与 NVARCHAR 对等。不应在要同步的统一数据库列中使用 NCHAR。如果必须使用非 SQL Anywhere NCHAR,请用 -b 选项运行 MobiLink 服务器。 SQL Anywhere 或 UltraLite 值可以长于 Oracle 值,因此上载时请确保值不要太大。 |
NCLOB |
LONG NVARCHAR |
在 UltraLite 中不可用。 Oracle 值可以长于 SQL Anywhere 或 UltraLite 值,因此下载时请确保值不要太大。 |
NUMBER(p,s) |
NUMBER(p,s) |
在 SQL Anywhere NUMBER 中,p 在 1 到 127 之间,而 s 始终小于或等于 p。在 Oracle NUMBER 中,p 的范围是从 1 到 38,而 s 的范围是从 -84 到 127。要进行同步,Oracle NUMBER 的数值范围必须在 0 到 38 之间。 |
NVARCHAR2(c char) |
NVARCHAR(c) |
在 UltraLite 中不可用。 SQL Anywhere 或 UltraLite 值可以长于 Oracle 值,因此上载时请确保值不要太大。 |
RAW |
BINARY |
SQL Anywhere 或 UltraLite 值可以长于 Oracle 值,因此上载时请确保值不要太大。 |
ROWID |
VARCHAR(64) |
UROWID 和 ROWID 是只读的,因此不可能进行同步。 |
TIMESTAMP(p<=6) |
TIMESTAMP |
当 p<6 时,您可能需要确保 SQL Anywhere 或 UltraLite 值具有相同的精度。否则,冲突检测可能会失败,也可能出现重复行。年份必须在 1-9999 范围内。 |
TIMESTAMP(p>6) |
||
TIMESTAMP(p) WITH LOCAL TIME ZONE |
在 SQL Anywhere 或 UltraLite 中没有相应的数据类型。 |
|
TIMESTAMP(p<=6) WITH TIME ZONE |
TIMESTAMP WITH TIME ZONE | |
TIMESTAMP(p) WITH TIME ZONE |
||
UROWID |
VARCHAR(64) |
UROWID 和 ROWID 是只读的,因此不可能进行同步。 |
VARCHAR2(n byte) |
VARCHAR(n) |
SQL Anywhere 或 UltraLite 值可以长于 Oracle 值,因此上载时请确保值不要太大。 |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |