如果输入到 SAP IQ 数据库的数据来自多种来源,那么并非所有数据都将和 SAP IQ 数据类型精确匹配。即需要转换部分数据。
可显式或隐式转换数据。例如,要将 INT 数据插入到 CHAR 列,则需要进行显式转换。
隐式转换可能会在以下情况下发生:
当需要进行显式转换时,您指定转换的方式取决于您是从平面文件中装载还是插入所选行:
TABLE 语句中,通过在 INSERT 语句中,可以在 SELECT 语句或 VALUES 列表中使用数据转换函数 CAST、CONVERT 和 DATEPART 来显式转换数据。
尽管大多数 SAP IQ 数据类型都与同名的 SAP SQL Anywhere 和 SAP ASE 数据类型完全兼容,但是它们之间还是有些差异。
为了在不同的版本之间实现兼容性,已经将几个数据类型定义为其它数据类型的同义词:
DECIMAL 是 NUMERIC 的同义词。
INTEGER 是 INT 的同义词。
TIMESTAMP 的同义词。
FLOAT (DOUBLE 的同义词,具体取决于 DOUBLE 用于值大于 15 的 NUMERIC(19,4) 的同义词,允许使用 NULL。
NUMERIC(10,4) 的同义词,允许使用 NULL。
您可以将同义词与其标准数据类型互换使用。当存在同义词时,数据在内部以标准数据类型存储。在错误消息中,将显示标准名称来代替同义词。 注意当将数字和日期数据类型转换为 CHAR 和 VARCHAR 时,SAP IQ 不会不加提示地截断转换结果。如果以下数据类型转换的字符串的长度超出了列宽,则生成转换错误: TINYINT、SMALLINT、[UNSIGNED] { INT | INTEGER }、[ UNSIGNED ] BIGINTNUMERIC、DECIMALFLOAT、DOUBLE、REALDATE、DATETIME、SMALLDATETIME、TIME、TIMESTAMP在转换错误的情况下,CONVERSION_ERROR 选项控制 SAP IQ 行为。当选项 CONVERSION_ERROR 被设置为: OFF – SAP IQ 将在适当情况下插入 NULL 值 ON – SAP IQ 回退插入并记录转换错误