KingbaseES 参数 - ignore_char_null_check

KingbaseES 基于PostgreSQL进行了大量的Oracle兼容性开发,为了能同时兼容Oracle 和 PG 的特性,增加参数进行控制。以下介绍 KingbaseES 下特有的参数 ignore_char_null_check

功能作用:KES 内部是拿 0x00 作为字符的结束符的。字符里边不允许含有0x00,如果一个字符串里边还有0x00的话,会被截断。参数默认值为 off ,也就是会检查字符串是否有 0x00 字符,这也是 PG 的行为。

1、Oracle对于ascii 0 字符处理

oracle对于ascii 为 0 的字符作为一个字符处理。

SQL> select 'a'||chr(0)||'b' from dual;

'A'
---
a b

SQL> select length('a'||chr(0)||'b') from dual;

LENGTH('A'||CHR(0)||'B')
------------------------
                       3

2、PG对于ascii 0 处理

testdb=# select E'\x00';
ERROR:  invalid byte sequence for encoding "UTF8": 0x00

3、KingbaseES 对于ascii 0 处理

test=# set ignore_char_null_check=off;
SET
test=# select E'\x00';
ERROR:  invalid byte sequence for encoding "UTF8": 0x00

test=# set ignore_char_null_check=on; 
SET
test=# select E'\x00';
 ?column? 
----------
 
(1 row)

test=# select 'a'||E'\x00'||'b';
?column?
----------
ab
(1 row)

总结:该参数是为迁移oracle数据而专门设置的,需要看看oracle那边,哪个字段里边有0x00,如果是clob的话就没啥问题,如果是varchar这种,就有风险。建议在迁移时打开,迁移后关闭。你可以看到,参数值为on,迁移也只是忽略这个特殊字符。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值