匿名用户对于integer类型数据,当ora_input_emptystr_isnull=off时,’’ 对于insert 或 select 都会因为类型转换问题报错。
ora_input_emptystr_isnull 参数位于data/kingbase.conf文件中
ora_input_emptystr_isnull 开关开启时,系统将输入的空串当做NULL处理会话级参数,oracle模式下默认是on , PG模式下默认是off)
当ora_input_emptystr_isnull=off时,’’ 当做字符串,无法转换成整型。当ora_input_emptystr_isnull=on 时,’’ 被转成null,而null 没有类型约束,所以转换没有问题。
2.1 ora_input_emptystr_isnull = true
2.1.1 该参数默认为true,特性与Oracle保持一致:
SHOW ora_input_emptystr_isnull;
2.1.2 创建表,并插入数据:
CREATE TABLE test_null(id int, info varchar(32) DEFAULT ‘’);
INSERT INTO test_null(id) values(1);
INSERT INTO test_null values(2, ‘’);
INSERT INTO test_null values(3, NULL );
INSERT INTO test_null values(4, ‘test’);
表结构,’’的默认值被转为NULL了:
2.1.3 查询字段info值为 ‘’,没有返回值,被转为了null
2.1.4 查询字段info值null
2.1.5 查询字段值info为非空
可以看到, ‘’是被做了转换,以null存储在数据库。
2.2 ora_input_emptystr_isnull = false
2.2.1 修改参数,建议将修改的参数放到配置文件的最下面:
2.2.2 重启生效
Linux使用命令行工具或者服务重启,Windows使用服务重启:
2.2.3 查看是否生效:
SHOW ora_input_emptystr_isnull;
2.2.4 创建表,并插入数据:
DROP TABLE test_null;
CREATE TABLE test_null(id int, info varchar(32) DEFAULT ‘’);
INSERT INTO test_null(id) values(1);
INSERT INTO test_null values(2, ‘’);
INSERT INTO test_null values(3, NULL );
INSERT INTO test_null values(4, ‘test’);
表结构:
2.2.5 查询字段info值为 ‘’
2.2.6 查询字段info值null
2.2.7 查询字段值info为非空
null和‘’是被认为不同的值。
3 null和null是不能比较的,既null不等于null
评论
有用 0
墨值悬赏

