在检查值[isnull]后需要连接到字段值

时间:2019-05-23 18:18:07

标签: sql stored-procedures isnull ssms-2012

我有一个存储过程,在其中从表中提取数据。该字段中的值可以为NULL或数字值(例如15)。

我希望用$显示此值,但是我发现这样做有点困难,因为我正在检查字段值isnull是否是{I1将值设置为0.0。看起来就是这样。

''Amount Paid''= isnull(tbl_A.AmountPaid,''0.0'')

是否有另一种方法可以使tbl_A.AmountPaid如果不是NULL,则在$前面显示$?

样本数据:93.39
检查它的值不为NULL后,我想将其显示为$ 93.39

3 个答案:

答案 0 :(得分:2)

使用串联:

coalesce(concat('$', tbl_A.AmountPaid), '0.0')

如果您想要$0.0,则可以选择:

coalesce(concat('$', tbl_A.AmountPaid), '$0.0')

或:

concat('$', coalesce(tbl_A.AmountPaid, 0))

答案 1 :(得分:1)

您可以使用类似下面的方法在金额前添加$符号。这样,如果值存在或为NULL,则两种情况都将显示$符号。

SELECT '$ '+CAST(ISNULL(tbl_A.AmountPaid,0.0) AS VARCHAR)

答案 2 :(得分:1)

  

AmountPaid如果不为NULL,则显示$。

如果数量不为空,以下查询将在前面添加$。对于NULL值,它将以空$返回AmoutPaid为空。

SELECT Id, 
       IIF(CONCAT('', AmountPaid) <> '', CONCAT('$ ', AmountPaid), '') AS AmountPaid
FROM Testtable

如果您想要0.0而不是空值,请使用

IIF(CONCAT('', AmountPaid) <> '', CONCAT('$ ', AmountPaid), '0.0') AS AmountPaid

包含示例数据的演示

DECLARE @Testtable TABLE (Id int, AmountPaid DECIMAL (9,2));

INSERT INTO @Testtable (Id, AmountPaid) VALUES
(1, 38.89), (2, NULL), (3, 14.2), (4, NULL);

SELECT Id, 
       IIF(CONCAT('', AmountPaid) <> '', CONCAT('$ ', AmountPaid), '') AS AmountPaid
FROM @Testtable

输出:

Id  AmountPaid
--------------
1   $ 38.89
2   
3   $ 14.20
4   

Demo on db<>fiddle with sample data