GBase 8c
适配迁移
问答

GBase8cV5字段类型为 varchar并且非空时,无法写入空字符串(不是NULL)

发表于2025-06-24 15:45:4993次浏览5个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:single_node GBase8cV5 S5.0.0B50 build 92a6222c) compiled at 2025-04-07 16:07:30 commit 0 last mr 806  on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit

【操作系统】: 银河麒麟V10

【CPU】:X86

【问题描述】*: 字段类型为 varchar并且非空时,无法写入空字符串(不是NULL)。如果数据库允许写入空字符串,则应用部分的适配工作量回比较大。

CREATE TABLE "TESTDB"."t" (
 "xid" int8 NOT NULL DEFAULT '1'::bigint,
 "code" varchar(8) COLLATE "pg_catalog"."default" NOT NULL DEFAULT ''::character varying
)

INSERT INTO "TESTDB"."t" VALUES (1, '');   

ERROR:  null value in column "code" violates not-null constraint

 

评论

登录后才可以发表评论
用户头像
GBase用户137发表于 1年前
稍等
用户头像
发表于 1年前
跟兼容库有关,mysql兼容的空值与null,不一样。
最佳回答
GBase用户16667发表于 1年前
@null:其实oracle、sql server、达梦、PG等数据库都时区分空串和空值的。
GBase用户51884发表于 2个月前
看看啦。
GBase用户47954发表于 1个月前
感谢作者的精彩分享!