You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过HANA系统或hdbcli设置获取未格式化查询结果?

解决HANA hdbcli返回格式化数值的问题

1. HANA系统层面说明

目前HANA没有全局系统级设置能强制所有客户端返回未格式化的Decimal类型值,数值的格式化逻辑大多是客户端侧处理,HANA服务器本身存储的是带原始精度的数值。

2. Python hdbcli全局配置方案

hdbcli默认会自动截断Decimal类型末尾无意义的零,可通过两种方式全局配置获取完整精度的数值:

  • 连接参数配置:建立连接时添加decimal_as_string=True参数,所有Decimal类型列会以字符串形式返回,完整保留定义的精度(比如Decimal(13,3)会返回"30.000")。示例代码:
from hdbcli import dbapi

conn = dbapi.connect(
    address="your-hana-host",
    port=30015,
    user="your-username",
    password="your-password",
    decimal_as_string=True
)
  • 环境变量配置:设置环境变量HDB_DECIMAL_AS_STRING=1,hdbcli会默认以字符串形式返回Decimal列,无需每次连接都指定参数。

3. 补充说明

HANA Studio的"Format Values"仅为客户端显示设置,不影响服务器返回的原始数据;Tableau能显示30.000是因为它会读取列的元数据(精度、小数位)并按定义格式化,而hdbcli默认做了截断处理。通过上述hdbcli配置,无需在SQL或Python中逐个转换列,就能全局获取未格式化的完整精度数值。

内容的提问来源于stack exchange,提问作者Truss120

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:34:52