在informix11.7上准备了一些数据.
informix有些数据类型的操作用SQL语句执行时,有特定的写法。
informix 11.70 + DbVisualizer v10.0.1 64λ + informix Server Studio 10.0 x86
https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/sqls.htm https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_0228.htm https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.esqlc.doc/ids_esqlc_0168.htm
- 一个表中只能有一个serial字段(bigserial or serial)
- SERIAL类型一定是非空的
- blob类型无法用update语句来更新
byte,blob, clob, text 数据类型都是blob数据类型.
ref : http://www-01.ibm.com/support/docview.wss?uid=swg21652966
如果是insert blob类型的数据,是用LOAD本地文件来引入blob数据的,没实验。 - DATETIME和INTERVAL有好多小类型,为什么要这么弄? 这些类型自己实验,实验不出来,对应的类型填什么数据能过, 官方的例子也不多. informix Server Studio完整版是可以通过导出数据的备份SQL来看插入,更新这些数据时,SQL怎么写。可是手头这个informix Server Studio的授权不全,很多功能都没有.
- 如果sql写错了,可以在Server Studio和DbVisualizer分别执行,总能看到sql执行错误的原因.
寤鸿〃
create table 'informix'.tbl_full_data_type ( col_serial SERIAL not null, col_boolean boolean, col_byte BYTE, col_char CHAR(1), col_character VARCHAR(1,1), col_varchar VARCHAR(1,1), col_nchar NCHAR(1), col_nvarchar NVARCHAR(1,1), col_lvarchar lvarchar, col_smallint SMALLINT, col_integer INT, col_int8 INT8, col_bigint BIGINT, col_decimal DECIMAL(16), col_numeric DECIMAL(16), col_smallfloat SMALLFLOAT, col_float FLOAT, col_double FLOAT, col_blob blob, col_clob clob, col_text TEXT, col_money MONEY(16,2), col_date DATE, col_datetime_01 DATETIME FRACTION TO FRACTION, col_datetime_02 DATETIME SECOND TO FRACTION, col_datetime_03 DATETIME SECOND TO SECOND, col_datetime_04 DATETIME MINUTE TO FRACTION, col_datetime_05 DATETIME MINUTE TO SECOND, col_datetime_06 DATETIME MINUTE TO MINUTE, col_datetime_07 DATETIME HOUR TO FRACTION, col_datetime_08 DATETIME HOUR TO SECOND, col_datetime_09 DATETIME HOUR TO MINUTE, col_datetime_10 DATETIME HOUR TO HOUR, col_datetime_11 DATETIME DAY TO FRACTION, col_datetime_12 DATETIME DAY TO SECOND, col_datetime_13 DATETIME DAY TO MINUTE, col_datetime_14 DATETIME DAY TO HOUR, col_datetime_15 DATETIME DAY TO DAY, col_datetime_16 DATETIME MONTH TO FRACTION, col_datetime_17 DATETIME MONTH TO SECOND, col_datetime_18 DATETIME MONTH TO MINUTE, col_datetime_19 DATETIME MONTH TO HOUR, col_datetime_20 DATETIME MONTH TO DAY, col_datetime_21 DATETIME MONTH TO MONTH, col_datetime_22 DATETIME YEAR TO FRACTION, col_datetime_23 DATETIME YEAR TO SECOND, col_datetime_24 DATETIME YEAR TO MINUTE, col_datetime_25 DATETIME YEAR TO HOUR, col_datetime_26 DATETIME YEAR TO DAY, col_datetime_27 DATETIME YEAR TO MONTH, col_datetime_28 DATETIME YEAR TO YEAR, col_interval_01 INTERVAL FRACTION TO FRACTION, col_interval_02 INTERVAL SECOND TO FRACTION, col_interval_03 INTERVAL SECOND TO SECOND, col_interval_04 INTERVAL MINUTE TO FRACTION, col_interval_05 INTERVAL MINUTE TO SECOND, col_interval_06 INTERVAL MINUTE TO MINUTE, col_interval_07 INTERVAL HOUR TO FRACTION, col_interval_08 INTERVAL HOUR TO SECOND, col_interval_09 INTERVAL HOUR TO MINUTE, col_interval_10 INTERVAL HOUR TO HOUR, col_interval_11 INTERVAL DAY TO FRACTION, col_interval_12 INTERVAL DAY TO SECOND, col_interval_13 INTERVAL DAY TO MINUTE, col_interval_14 INTERVAL DAY TO HOUR, col_interval_15 INTERVAL DAY TO DAY, col_interval_16 INTERVAL MONTH TO MONTH, col_interval_17 INTERVAL YEAR TO MONTH, col_interval_18 INTERVAL YEAR TO YEAR )
alter table tbl_full_data_type add (col_BOOLEAN BOOLEAN); alter table tbl_full_data_type add ( col_CHARACTER CHARACTER VARYING, col_VARCHAR VARCHAR, col_nchar nchar, col_nvarchar nvarchar, col_lvarchar lvarchar );
INSERT INTO tbl_full_data_type ( col_serial, col_boolean, col_char, col_character, col_varchar, col_nchar, col_nvarchar, col_lvarchar, col_smallint, col_integer, col_int8, col_bigint, col_decimal, col_numeric, col_smallfloat, col_float, col_double, col_datetime_03, col_datetime_28 ) VALUES ( 2000, 't', '2', '3', '4', '5', '6', '7', 8, 9, 10, 11, 12, 13, 14.5, 15.6, 16.7, '58', '1974' );
可以抓单个字段的小包
select col_serial from tbl_full_data_type where col_serial = 2000; select col_boolean from tbl_full_data_type where col_serial = 2000; select col_datetime_28 from tbl_full_data_type where col_serial = 2000; select col_nvarchar from tbl_full_data_type where col_serial = 2000; select col_nvarchar, col_serial from tbl_full_data_type where col_serial = 2000;
boolean 的SQL值为’f’ or ‘t’
‘t’ is true
‘f’ is false
update tbl_full_data_type set col_BOOLEAN = 'f' where col_serial = 1000 update tbl_full_data_type set col_DATETIME_01 = '3.5' where col_serial = 1000
文章来源: informix的数据类型列表