#sql #sql-server-2008 #type-conversion #isnull
#sql #sql-server-2008 #тип-преобразование #isnull
Вопрос:
Мне нужно преобразовать идентификатор столбца типа данных INT в пустую строку [«]. Я не должен изменять тип данных исходного столбца, но должен преобразовать его в моем преобразовании в другой таблице. Столбец ID является «обнуляемым», поскольку в нем есть null .Это мой код.
CREATE TABLE #V(ID INT) ;
INSERT INTO #V
VALUES (1),(2),(3),(4),(5),(NULL),(NULL) ;
SELECT CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column
FROM #V;
это возвращает:
ID_Column
1
2
3
4
5
NULL
NULL
когда я изменяю свой оператор CASE, он выглядит следующим образом:
CASE WHEN CAST(ISNULL(ID,'') AS VARCHAR(10)) = '' THEN '' ELSE ID END AS ID_Column
возвращает:
ID_Column
1
2
3
4
5
0
0
Ответ №1:
Это то, что вы хотите?
select coalesce(cast(id as varchar(255)), '')
from #v;
Вы должны превратить весь столбец результатов в один столбец. Если вам нужно пустое значение, то тип представляет собой какую-то символьную строку.
В ваших примерах else id
это означает, что результат из case
является целым числом, поэтому вы получаете либо 0
или NULL
.
Комментарии:
1. Отлично! Работает идеально.