Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jothaz

[Resolvido] IS NULL ou ISNULL()? Eis a questão!

Recommended Posts

Camaradas,

[*]ISNULL() é uma função do SQL Server que efetua a troca do valor NULL pelo caracter especificado no comando.

 

Sintaxe:

--ISNULL(campo ou variável,caracter)	ISNULL(NOME,'')ISNULL(@DAT_INICIO,'')ISNULL(PRECO,0)----Usando ISNULL com IFIF ISNULL(@COD,-1) ....----Usando ISNULL com CASECASE	  WHEN (ISNULL(VR_ITEM,0) * PER) > 10 THEN ...
Exemplos:

--DECLARE @AUX VARCHAR(80), @TEXTO VARCHAR(80), @NUMERO INTSET @AUX = NULLSET @TEXTO = ' dez anos já e nenhuma gota me alcaçou..'----Ao concatenar @AUX que esta igual a NULL com @TEXTO retorna NULLSELECT @AUX + ' - ' +  @TEXTO----Utilizando a função ISNUL() é possível trocar o conteúdo NULL--por '' (branco) e retornar o resultado corretoSELECT	 ISNULL(@AUX,'') + ' - ' +  @TEXTO----A função ISNULL() pode ser utlizada com INT, DATETIME ou qualquer outor--tipo que receba NULLSET @NUMERO = NULLSELECT  @NUMERO + 1SELECT  ISNULL(@NUMERO,0) + 1
Os exemplos acima são bem simples já dão uma visão de como pode-se fazer uso so ISNULL(). Notem que pode-se utilizá-lo em IF´s, CASE´s e WHERE´s. No mais sua imaginação e os erros são o limite.

 

 

[*]IS NULL é um operador do SQL Server que retorna true (verdadeiro) caso algum registro satisfaça a condição descrita.

Exemplos:

----Criando massa de testeCREATE TABLE #TMP	 (NUMERO INT NULL,DE_JUSTIF VARCHAR(80) NULL,DT_CAD DATETIME NULL)INSERT INTO #TMP	 (NUMERO, DE_JUSTIF) VALUES					(1,'Os loucos fazem castelos no ar! Os psicólogos	 cobram o aluguel')INSERT INTO #TMP	 (NUMERO, DE_JUSTIF,DT_CAD) VALUES					(2,NULL,GETDATE())INSERT INTO #TMP (NUMERO, DE_JUSTIF) VALUES (3,'  ')INSERT INTO #TMP (NUMERO,DT_CAD)			VALUES (4,'2007/01/10')INSERT INTO #TMP (NUMERO, DE_JUSTIF) VALUES (5,'O que não me mata me fortalece.')INSERT INTO #TMP (NUMERO, DE_JUSTIF,DT_CAD) VALUES (6,'Navegar é preciso, viver não é precisio.','1980/07/22')----Usando IS NULL no CASE para definir retorno de dadosSELECT	 DE_JUSTIF,		CASE			WHEN DT_CAD IS NULL  THEN 'NÃO CADASTRADA!'			ELSE CONVERT(VARCHAR(10),DT_CAD,103)		END AS MSG_DATA ,		CASE			WHEN DE_JUSTIF IS NULL  THEN 'NÃO CADASTRADA!'			ELSE DE_JUSTIF		END AS MSG_JUSTIFFROM	 #TMP----Usando IS NULL no WHERE para efetuar filtroSELECT	 *FROM	 #TMPWHERE	DE_JUSTIF IS NULL----Usando IS NULL no WHERE para criar um filtro dinâmicoSELECT	*FROM	  #TMPWHERE			   (@ID IS NULL OR ID = @ID)DROP TABLE  #TMP
Os exemplos apresetam de forma suscinta a utilização do IS NULL que também pode ser utilizado em IF´s, CASE´s e WHERE´s.

Espero que este post sirva para facilitar o entendimento e aclarar a idéias. Afinal tanto a função ISNULL() quanto o operador IS NULL podem ser utilizados em conjunto abrindo um universo ainda maior para exploração.

 

 

Fonte/Autor/link

AUTOR: "Jothaz"

 

Dúvidas, criticas, contribuições, correções e adições serão bem vindas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.