微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何更改 Hana SQL 查询会话或连接的数字格式?

如何解决如何更改 Hana SQL 查询会话或连接的数字格式?

对于将 SAPB1 与 HanaDB 结合使用的客户,我们执行相同的查询提取数据(使用 ADO.NET 接口)。有些有他们的区域系统系统,似乎可以根据他们的区域设置等来控制数字格式。

例如执行时说:SELECT RDR1."Quantity" FROM RDR1

  • 对于美国的客户,RDR1."Quantity" = 2.000000
  • 对于德国的客户,RDR1."Quantity" = 2,000000(注意逗号与小数点)

我假设该值的实际数据库存储是相同的,只是查询引擎根据设置应用认系统格式,使最终结果以一种或另一种方式格式化。

现在,可以使用蛮力方法和每列进行这种类型的更改: REPLACE(CAST(ROUND(RDR1."Quantity",2) AS DECIMAL(10,2)),','.') AS "Quantity” 给我“2.00”

然而,我们有很多这样的列,我们想让代码在所有情况下都可用,而不是在不同区域有多个相同查询的实例——而且似乎应该有一种方法告诉查询引擎返回值就像在美国一样,并忽略认的系统区域设置和货币设置。

问题: 是否可以进行高级设置更改而不是按列格式化/转换 - 使用 Hana sql 查询代码(如会话变量或其他东西)或连接设置建立到 HanaDB 的 ADO.NET 连接,这只会使值显示出来,就像它们在美国一样?

我还没有找到,但可能在文档中不太容易找到如何处理它。

解决方法

不,没有 HANA 设置可以定义应用程序(在您的案例中是 SAP Business One)如何将数据呈现给用户屏幕。

对于 SAP B1,您可以找到有关设置这些用户设置的文档 here。 这些设置包括“千位分隔符”、“分隔符”、“小数位”等。

但在 HANA DB 级别,没有全局设置。

此外,提到的 REPLACE 解决方法将输入数字数据转换为字符串,丢失所有数字语义(排序、数学运算)并增加这些值的内存要求。 尽量避免使用这种技术。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。