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

Need to concatenate to a field value, after checking if value [isnull]

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

我希望用 $ 显示这个值,但是我发现这样做有点困难,因为我正在检查字段值 isnull,如果它是,我将值设置为 0.0。这是它的样子。

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

是否有其他方法可以做到这一点,如果 tbl_A.AmountPaid 不为 NULL,则在其前面显示 $?

样本数据:93.39
一旦检查该值不为 NULL

,我想将其显示为 $ 93.39

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

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

使用串联:

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

如果您想要 [=13=].0,则:

coalesce(concat('$', tbl_A.AmountPaid), '[=11=].0')

或:

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

AmountPaid is displayed with $ in front of it if it isn't NULL

如果金额不为空,以下查询将在前面添加 $。对于 NULL 值,它将 return 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