Замените NULL пустым значением (SQL Server) - PullRequest
1 голос
/ 13 мая 2019

Заменить значение NULL на пустое значение

При попытке преобразовать NULL в пустое значение с помощью оператора CASE.

Примечание: sampCol это числовые идентификаторы

,CASE WHEN sampCol IS NULL THEN '' ELSE sampCol END as sampCol

Я получаю следующую ошибку:

Ошибка преобразования типа данных varchar в числовой.

Ответы [ 4 ]

5 голосов
/ 13 мая 2019

Вы смешиваете числовые и строковые значения.

NULL не является пустой строкой. Это отсутствие стоимости.

Подобные элементы действительно должны быть отнесены к уровню представления, но если необходимо, попробуйте следующий чит.

...
, concat('',sampCol) as sampCol 
...
4 голосов
/ 13 мая 2019

Это связано с тем, что выражение case может возвращать один и только тип данных в соответствии с приоритетом типа данных. Вы не можете преобразовать пустую строку в числовой тип данных. То, что вы пытаетесь сделать, звучит так, как будто оно принадлежит на уровне представления, а не на уровне данных. Пусть случится NULL !!!

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

Использование COALESCE() с CAST() поможет:

SELECT COALESCE(CAST(SampCol AS VARCHAR (10)), '') AS SampCol
FROM TestTable

Здесь вместо VARCHAR (10) вы можете изменить необходимую длину в соответствии с потребностями вашего бизнеса.

Демонстрация по дб <> fiddle

0 голосов
/ 13 мая 2019
    ..CASE WHEN sampCol IS NULL THEN to_number('') ELSE sampCol END as sampCol
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...