O trecho de código a seguir está retornando 1900-01-01 quando o campo DOB é nulo. Eu queria (e esperava) que retornasse uma string vazia (''), mas não é. Como devo proceder para obter os resultados desejados?
isnull(convert(date,DOB,1),'')
O trecho de código a seguir está retornando 1900-01-01 quando o campo DOB é nulo. Eu queria (e esperava) que retornasse uma string vazia (''), mas não é. Como devo proceder para obter os resultados desejados?
isnull(convert(date,DOB,1),'')
Você não pode obter uma string vazia porque está retornando o
DATE
tipo de valor deISNULL
.De acordo com os documentos ,
ISNULL
Se você estiver verificando se o valor é ou não
NULL
, não há necessidade de convertê-lo em uma data, a menos que você queira retornar um valor de data (o que você não parece).Em vez disso, use:
Que vai voltar
se o valor for
NULL
.Uma
NULL
data éNULL
(sem valor). Uma string vazia, por outro lado, é avaliada como0
, que no SQL Server é implicitamente um número inteiro que representa o número de dias desde1900-01-01
.Isso converterá a data NULL em espaço. A camada de aplicação (Excel) lida bem com o espaço
Basta criar uma visualização
CREATE VIEW test_view
AS
SELECT case quando year(DOB)<=1900 então null else DOB termina como DOB,sometext,id from test;
e, em seguida, use-a na tabela original: selecione * de test_view