【问题标题】:How to convert SQL column null value to 0 and varchar to decimal in sql query如何在 sql 查询中将 SQL 列空值转换为 0 并将 varchar 转换为十进制
【发布时间】:2015-03-03 18:52:18
【问题描述】:

我需要将varchar 数据类型中的SQL 列转换为decimal 并将空值转换为0。这是我将varchar 转换为decimal 的代码:

SELECT 
    CAST(debit as DECIMAL(9,2)),
    CAST(credit as DECIMAL(9,2)),
    sum_accname,
    sum_date, 
    sum_description
FROM 
    sum_balance

我需要将借方和贷方列的空值转换为零。如何在这段代码中插入空值转换部分?

【问题讨论】:

  • 您是否正在编写 SQL(结构化查询语言)并且真的是指 Microsoft SQL Server(实际产品)?如果是:请添加sql-server 标签以明确这一点。如果不是:什么这是用于数据库系统的?

标签: sql sql-server select sql-server-2008-r2 crystal-reports


【解决方案1】:

使用 COALESCE 函数获取 NOT NULL 值。

试试这个:

SELECT 
    CAST(COALESCE(debit, '0') AS DECIMAL(9,2)),
    CAST(COALESCE(credit, '0') AS DECIMAL(9,2)),
    sum_accname,
    sum_date, 
    sum_description
FROM 
    sum_balance;

【讨论】:

  • 这给出了一个错误:'COALESCSE' 不是一个可识别的内置函数名
【解决方案2】:

试试这个

SELECT 
    CAST(isnull(debit ,0) as DECIMAL(9,2)),
    CAST(isnull(credit,0) as DECIMAL(9,2)),
    sum_accname,
    sum_date, 
    sum_description
FROM 
    sum_balance

【讨论】:

  • @Ganesh_Develkar 这是有效的,但是当我在计算中使用此查询时,它不显示负值(例如:-65000.00)所有负值都显示 0
  • @user3844217 我认为这些值是空的,看看这个select CAST(isnull(-65000.00 ,0) as DECIMAL(9,2))
【解决方案3】:

改进了格式,对于 sql server 有 isnull 的选项......
查询应该是这样的

SELECT isnull(CAST(debit as DECIMAL(9,2)),0), 
isnull(CAST(credit as DECIMAL(9,2)),0), sum_accname, sum_date, sum_description
FROM sum_balance

【讨论】:

    【解决方案4】:
    SELECT 
        COALESCE(CAST(debit as DECIMAL(9,2)),0) as debit,
        COALESCE(CAST(credit as DECIMAL(9,2)),0) as credit,
        sum_accname,
        sum_date, 
        sum_description
    FROM 
        sum_balance
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多