Преобразование значений 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