Преобразование значений varchar в десятичные при обработке значений NULL и EMPTY как 0

У меня есть столбец типа данных varchar, заполненный набором значений, таких как 1,2, 5,33, а также NULL и строки EMPTY. Я хочу преобразовать все значения в десятичную, рассматривая значения NULL и EMPTY как 0.

Я могу изменить NULL или пустые строки, используя функцию CONVERT, как показано ниже. Таким образом я заменяю пустые и пустые строки на varhcar 0.

CASE WHEN Column1 = '' OR Column1= NULL THEN '0' ELSE Column1 END AS 'NewColumn1'

Однако я хочу преобразовать эти данные (выходные данные NewColumn1) в десятичные, но когда я помещаю оператор CASE в функцию CONVERT или CAST, у меня возникают ошибки.

Я также попробовал следующее. СONVERT(DECIMAL(10,4), ISNULL(Column1, '0')) однако это терпит неудачу, так как здесь я не обрабатываю ПУСТЫЕ строки.

Любые идеи, как я могу решить эту проблему.

2 ответа

Решение

Простой способ:

SELECT CONVERT(DECIMAL(10, 4), ISNULL(NULLIF(Column1, ''), '0'))

Ваш CASE заявление не работает, потому что вы проверяете, если Column1 = NULL, Вы должны проверить, если это IS NULL,

CASE WHEN Column1 = '' OR Column1 IS NULL THEN '0' ELSE Column1 END AS 'NewColumn1'

Попробуй это,

SELECT CAST(ISNULL(NULLIF(Column1, ''),0) AS DECIMAL(12,2)) FROM table
Другие вопросы по тегам