O seguinte trecho de código está retornando 1900-01-01 quando o campo DOB é nulo. Eu queria (e esperava) retornar uma string vazia (''), mas não é. Como devo proceder para obter os resultados desejados?
isnull(convert(date,DOB,1),'')
O seguinte trecho de código está retornando 1900-01-01 quando o campo DOB é nulo. Eu queria (e esperava) retornar uma string vazia (''), mas não é. Como devo proceder para obter os resultados desejados?
isnull(convert(date,DOB,1),'')
Respostas:
Você não pode obter uma sequência vazia porque está retornando o DATEtipo de valor ISNULL.
Por MSDN ,ISNULL
Retorna o mesmo tipo que check_expression. Se um NULL literal for fornecido como verificação_expressão, retornará o tipo de dados do valor_de substituição. Se um NULL literal for fornecido como verificação_expressão e nenhum valor_de substituição for fornecido, retornará um int.
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ê deseje retornar um valor de data (o que não parece ser).
Em vez disso, use:
SELECT ISNULL( DOB , '')
Que retornará
''
se o valor for NULL.
Uma NULLdata é NULL(sem valor). Uma string vazia, por outro lado, avalia como 0, que no SQL Server é implicitamente um número inteiro que representa o número de dias desde então 1900-01-01.
Se você deseja retornar um valor para o DOB quando ele é preenchido e remover o valor nulo quando não houver nenhum DOB preenchido. Você pode tentar isso, mas o DOB será um varchar e não um tipo de data.
isnull(cast(cast(DOB as date)as varchar),'') as DOB (SQL SERVER)
VARCHARpara um DATEe voltar para um VARCHARnão faz sentido. Quando você remove esse absurdo, sua resposta é a mesma que a resposta aceita, com menos exposição.
datetimedata e precisava apenas dela YYYY-MM-DD. Então, lançando como dateeu largar o tempo. Em seguida, lançar o varcharpermite o uso da isnullfunção. Portanto, ainda recebo uma data para os registros preenchidos e removo os valores nulos. Caso contrário, eu estava recebendo 1900-01-01 00:00:00.000.
usar
selecionar isnull (Converter (Varchar (500), Data, 106), '')
está funcionando
NULLdatas está dizendoSELECT CAST('' AS DATE). Que tipo de dados éDOB?