暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维数据库查询返回列名大小写设置

Ctrl+z 2025-08-22
59

案例背景

某省BOMC系统


环境描述

OS:bclinux for euler 21.10

数据库版本:S3.1.1_B01

兼容模式:A

数据库架构:集中式主备


描述

业务反馈在使用磐维数据库时,查询结果返回的列名都是小写,而在Oracle环境中查询的时候,返回结果都是大写,需要保持和Oracle一致。

从上图可以看出用别名或者原名都是返回小写的;

但是业务反馈,代码里之前默认取大写列名,直接就空指针了:


分析

查看数据库兼容模式及lower_case_column_names参数:

在磐维数据库中,查询返回结果中列名的大小写由参数uppercase_attribute_name或result_case_mode决定,uppercase_attribute_name控制列名是否以大写形式返回给客户端,默认为off;

而result_case_mode仅影响返回字段的大小写形式,不影响数据库原有的大小写匹配逻辑,且该参数仅作用于会话级别,在postgresql.conf文件中配置无效,默认值是lower;

这两个参数只作用于Oracle(A)兼容模式和集中式环境中;

lower_case_column_names参数只作用于MySQL(B)兼容模式中。


A模式测试1,会话开启result_case_mode:

A模式测试2,开启uppercase_attribute_name:

B模式测试1,开启uppercase_attribute_name:

B模式测试2,开启result_case_mode:

A/B模式下测试,对于加引号的别名都是区分大小写的:

经测试,目前磐维查询结果列名大小写由uppercase_attribute_name或result_case_mode控制,且智能在A模式中使用,通过别名加双引号的方式在A、B模式中均可实现大小写区分。


结论

A模式中设置uppercase_attribute_name参数为on,或者会话中设置result_case_mode参数为upper,或者别名加双引号的方式,都可以实现查询返回列名大写。


实践方法

1. uppercase_attribute_name参数设置

gs_guc reload -N all -I all -c “uppercase_attribute_name=on”;

2. result_case_mode参数设置

在数据库会话中执行:set result_case_mode to upper

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论