首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改Hana SQL查询会话或连接的编号格式?

如何更改Hana SQL查询会话或连接的编号格式?
EN

Stack Overflow用户
提问于 2021-02-22 23:02:45
回答 2查看 2.6K关注 0票数 0

对于使用SAPB1和HanaDB的客户,我们执行相同的查询来提取数据(使用ADO.NET接口)。有些国家的区域系统系统似乎根据其地区控制数字格式,等等。

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

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

我假设值的实际数据库存储是相同的,只是查询引擎应用了基于设置的默认系统格式,这些设置使最终结果以某种方式格式化。

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

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

问题:当我们建立到HanaDB的ADO.NET连接时,是否有可能进行高级别的设置更改,而不是使用每个列的格式/转换--或者使用Hana SQL查询代码(比如会话变量或其他什么)或连接设置,这只会使值像在美国那样显示出来?

我还没有找到任何东西,但也许在文档中并不是那么容易找到如何处理它。

EN

回答 2

Stack Overflow用户

发布于 2021-02-23 10:33:05

不,没有HANA设置可以定义应用程序(在您的情况下)如何将数据呈现给用户屏幕。

对于SAP B1,您可以找到设置这些用户设置这里的文档。这些设置包括“千位分隔符”、“分隔符”、“十进制位”等。

但在HANA DB级别上,没有这方面的全球设置。

此外,前面提到的REPLACE解决方案将输入数字数据转换为字符串,失去了所有数字语义(排序、数学操作),并增加了对这些值的内存需求。如果可能的话,最好避免使用这种技术。

票数 0
EN

Stack Overflow用户

发布于 2021-10-02 13:09:47

如果要更改程序输出的十进制分隔符,只需将其告知.NET。一个选项是设置当前线程的文化,如下面的片段中所示:

代码语言:javascript
复制
using System;
using System.Globalization;

class Program
{
    static void Main(string[] args)
    {
        decimal d = 2021.1002m;
        
        Console.WriteLine("Current Culture is {0}.", System.Threading.Thread.CurrentThread.CurrentCulture.Name);
        Console.WriteLine("d = {0}.", d);
        
        System.Threading.Thread.CurrentThread.CurrentCulture =
            new CultureInfo("en-US");
            
        Console.WriteLine("Current Culture now is {0}.", System.Threading.Thread.CurrentThread.CurrentCulture.Name);
        Console.WriteLine("And d = {0}.", d);
    }
}

对我来说,输出是:

代码语言:javascript
复制
Current Culture is es-ES.
d = 2021,1002.
Current Culture now is en-US.
And d = 2021.1002.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66324693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档