金仓Oracle兼容模式大小写敏感、字段有大小写

发布时间:2026/6/27 8:19:04
金仓Oracle兼容模式大小写敏感、字段有大小写 报错原因金仓Oracle兼容模式大小写敏感你建表时字段用双引号定义C_IsValid金仓 Oracle 模式下带双引号创建的标识符严格区分大小写不加双引号写a.C_IsValid数据库会自动转小写a.c_isvalid匹配不到字段直接报列不存在提示也明确告诉你应该引用a.C_IsValid。错误 SQLsqlSELECT * FROM t_channel a WHERE a.C_IsValid 1;数据库自动转小写识别为a.c_isvalid和真实字段C_IsValid大小写不匹配。正确写法两种任选方式 1给字段加上双引号推荐完全匹配建表大小写sqlSELECT * FROM pobo_sms_new.t_channel a WHERE a.C_IsValid 1;方式 2查询时表 字段全部双引号包裹规范写法sqlSELECT * FROM pobo_sms_new.t_channel a WHERE a.C_IsValid 1;根源说明建表语句使用C_IsValid双引号字段名 → 标识符大小写固定不加双引号的标识符金仓 / Oracle 会统一转为小写MySQL 反引号不区分大小写迁移到金仓 Oracle 模式很容易踩这个坑。长期规避方案推荐重建表去掉双引号如果不需要大小写区分重新建表时删除所有双引号字段名正常写查询不用加引号sqlDROP TABLE IF EXISTS pobo_sms_new.t_channel;CREATE TABLE pobo_sms_new.t_channel (C_ID bigint GENERATED BY DEFAULT AS IDENTITY COMMENT 自增主键,C_OrgID integer NOT NULL DEFAULT 0,C_ChannelName character varying(32 char) NOT NULL,C_Username character varying(32 char) NULL,C_Password character varying(1024 char) NULL,C_Url character varying(255 char) NULL,C_priority bigint NOT NULL DEFAULT 0,C_IsValid smallint NOT NULL DEFAULT 1,C_packageName character varying(50 char) NULL,C_report integer NULL DEFAULT 0,seque integer NULL,CONSTRAINT PRIMARY_idx2 PRIMARY KEY (C_ID));重建后下面不带双引号的 SQL 就能正常执行sqlSELECT * FROM pobo_sms_new.t_channel a WHERE a.C_IsValid 1;