Преобразование значений столбца INT в пустую строку с помощью ISNULL

#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. Отлично! Работает идеально.