Java 选择使用NVL手写字母。为什么?
我写了这个选择:Java 选择使用NVL手写字母。为什么?,java,sql,apache-spark-sql,Java,Sql,Apache Spark Sql,我写了这个选择: SELECT nvl(SUM(vl_item),0) AS SUM_VALOR_ITENS ,nvl(SUM(vl_discount),0) AS SUM_VALOR_DESCONTO ,nvl(SUM(qty_item) is null ,0,0) AS SUM_QTD_ITENS ,COUNT(DISTINCT cod_product_rms) AS QTD_ITENS_UNICOS FROM db.my_tabl
SELECT
nvl(SUM(vl_item),0) AS SUM_VALOR_ITENS
,nvl(SUM(vl_discount),0) AS SUM_VALOR_DESCONTO
,nvl(SUM(qty_item) is null ,0,0) AS SUM_QTD_ITENS
,COUNT(DISTINCT cod_product_rms) AS QTD_ITENS_UNICOS
FROM db.my_table
where SAFRA = 202006
当我在DBeaver上运行时,结果是0(零),就像我预期的那样。
但是,当我使用Java在HQL文件中运行此SQL时,结果分别是“0E-10”、“0E-18”和“0E-18”。
我不明白为什么我会收到这个结果。
有人能帮我吗?我建议使用coalesce,nvl不适用于第三列,因为nvl只接受2个参数(这一个需要3个),而coalesce可以接受任意多个参数
SELECT
coalesce(SUM(vl_item),0) AS SUM_VALOR_ITENS
,coalesce(SUM(vl_discount),0) AS SUM_VALOR_DESCONTO
,coalesce(SUM(qty_item) is null ,0,0) AS SUM_QTD_ITENS
,COUNT(DISTINCT cod_product_rms) AS QTD_ITENS_UNICOS
FROM db.my_table
where SAFRA = 202006
我建议使用coalesce,nvl在第3列中不起作用,因为nvl只接受2个参数(这一个接受3个),而coalesce可以接受任意数量的参数
SELECT
coalesce(SUM(vl_item),0) AS SUM_VALOR_ITENS
,coalesce(SUM(vl_discount),0) AS SUM_VALOR_DESCONTO
,coalesce(SUM(qty_item) is null ,0,0) AS SUM_QTD_ITENS
,COUNT(DISTINCT cod_product_rms) AS QTD_ITENS_UNICOS
FROM db.my_table
where SAFRA = 202006
这回答了你的问题吗?蜂巢正在将双重化为科学表征好了,我现在明白了。现在的问题是:如何包含将空值转换为零整数(或十进制)的处理方法?这是否回答了您的问题?蜂巢正在将双重化为科学表征好了,我现在明白了。现在的问题是:如何包含将空值转换为零整数(或十进制)的处理?