Quero verificar dados, mas ignore-os se forem nulos ou vazios. Atualmente, a consulta é a seguinte ...
Select
Coalesce(listing.OfferText, company.OfferText, '') As Offer_Text,
from tbl_directorylisting listing
Inner Join tbl_companymaster company
On listing.company_id= company.company_id
Mas quero obter company.OfferTex
t se listing.Offertext
for uma string vazia e também se for nula.
Qual é a melhor solução?
sql-server-2005
digiguru
fonte
fonte
Neste exemplo, se
listing.OfferText
for NULL, a função LEN () também deve retornar NULL, mas ainda não é> 0.Atualizar
Eu aprendi algumas coisas nos 5 anos e meio desde que postamos isso, e faço isso de maneira muito diferente agora:
Isso é semelhante à resposta aceita, mas também possui um fallback, caso
Company.OfferText
também seja nulo. Nenhuma das outras respostas atuais usandoNULLIF()
também faz isso.fonte
fonte
Aqui está outra solução:
fonte
Você pode usar
ISNULL
e verificar a resposta na saída conhecida:fonte
No SQL Server 2012 você tem
IIF
, por exemplo, você pode usá-lo comoDa mesma maneira que você pode verificar se o campo está vazio.
fonte
Use a função LEN para verificar valores nulos ou vazios. Você pode apenas usar LEN (@SomeVarcharParm)> 0. Isso retornará false se o valor for NULL, '' ou ''. Isso ocorre porque LEN (NULL) retorna NULL e NULL> 0 retorna false. Além disso, LEN ('') retorna 0. Veja você mesmo executar:
fonte
fonte
NULLIF()
e unir-se a uma sequência vazia secompany.OfferText
for nulo. No entanto, a segundaNULLIF()
chamada aqui não serve para nada, como se esse valor fosse uma string vazia, você só vai coalescer novamente em uma string vazia.Essa simples combinação de COALESCE e NULLIF deve fazer o truque:
Nota: Adicione outra sequência vazia como o último argumento COALESCE se desejar que a instrução retorne uma sequência vazia em vez de NULL se os dois valores forem NULL.
fonte
Eu sei que este é um tópico antigo, mas eu acabei de ver um dos posts anteriores acima e não está correto.
Se você estiver usando LEN (...) para determinar se o campo é NULL ou VAZIO , será necessário usá-lo da seguinte maneira:
fonte
Aqui está uma solução, mas não sei se é a melhor ....
fonte
fonte
esta sintaxe:
trabalhou para mim no Microsoft SQL Server 2008 (SP3)
fonte
Para impedir os registros com
Empty
ouNull
valor no resultado SQLpodemos simplesmente adicionar
..... WHERE Column_name != '' or 'null'
fonte
fonte
[Column_name]> '' exclui nulos e cadeias vazias. Há um espaço entre as aspas simples.
fonte
Isso serve para espaços também.
fonte