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,迁移也只是忽略这个特殊字符。

 

posted @   KINGBASE研究院  阅读(477)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示