Необходимо объединить значение поля после проверки, если значение [isnull] - PullRequest
1 голос
/ 23 мая 2019

У меня есть хранимая процедура, в которой я извлекаю данные из таблицы.Значение в поле может быть либо NULL, либо числовым значением (например, 15).

Я надеюсь отобразить это значение с $, однако мне сложно это сделать, так как я проверяю, является ли значение поля isnull, если оно есть, язначение настройки 0.0.Вот как это выглядит.

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

Есть ли альтернативный способ сделать это так, чтобы tbl_A.AmountPaid отображался с $ перед ним, если он не NULL?

пример данных: 93,39
Я хотел бы отобразить его как $ 93.39 после того, как будет проверено, что значение не равно NULL

Ответы [ 3 ]

2 голосов
/ 23 мая 2019

Используйте объединение:

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

Если вы хотите $0.0, то либо:

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

, либо:

concat('$', coalesce(tbl_A.AmountPaid, 0))
1 голос
/ 23 мая 2019

AmountPaid отображается с $ перед ним, если оно не равно NULL

Следующий запрос добавит $ вперед, если сумма не равна нулю. Для значений NULL он вернет AmoutPaid как пустое со знаком out $.

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   

Демонстрация на дБ <> скрипка с данными выборки

1 голос
/ 23 мая 2019

Вы можете использовать что-то вроде ниже, чтобы добавить знак $ перед суммой. Таким образом, знак $ будет отображаться для обоих случаев, если есть значения или NULL.

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