暂无图片
Ora_input_emptystr_isnull 对于数值类型空值有哪些影响?
我来答
分享
暂无图片 匿名用户
Ora_input_emptystr_isnull 对于数值类型空值有哪些影响?

对于integer类型数据,当ora_input_emptystr_isnull=off时,’’ 对于insert 或 select 都会因为类型转换问题报错。

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
shunwahⓂ️

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
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏