如何在SQL查询中将SQL列null值转换为0,将varchar转换为十进制

如何在SQL查询中将SQL列null值转换为0,将varchar转换为十进制,sql,sql-server,select,sql-server-2008-r2,crystal-reports,Sql,Sql Server,Select,Sql Server 2008 R2,Crystal Reports,我需要将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 我需要将借方和贷方列的空值转换为零。如何将空值转换部分插入此代码?

我需要将
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
我需要将借方和贷方列的空值转换为零。如何将空值转换部分插入此代码?

使用函数获取非空值

试试这个:

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;
试试这个

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

改进了格式设置,对于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

您是在编写SQL(结构化查询语言)吗?您的意思是说Microsoft SQL Server(实际产品)?如果是:请添加
sql server
标记以明确这一点。如果不是:这是什么数据库系统?这是一个错误:“coalesce”不是一个可识别的内置函数name@Ganesh_Develkar这是可行的,但当我在计算中使用此查询时,它不会显示负值(例如:-65000.00)所有负值都显示出来0@user3844217我认为这些值是空的看看这个
选择CAST(isnull(-65000.00,0)作为十进制(9,2))
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