Ley conmutativa del NOT en SQL Server

Nunca en la vida me lo había preguntado... pero al igual que la gran pregunta ¿ser o no ser?... a veces llegan personas con esas preguntas filosófico-algorítmica, que aunque uno al verlo sabe la respuesta, no pude soportar hacer la demostración y comprobarlo directamente.

La pregunta es muy sencilla. Es lo mismo "IF NOT @intValor IS NULL" que "IF @intValor IS NOT NULL"?

Vamos a la cuestión:
DECLARE @intValor INT, @notIsNull INT, @isNotNull INT
SET @intValor = 1;
SET @notIsNull = 0;
SET @isNotNull = 0;
IF NOT @intValor IS NULL
BEGIN
SET @notIsNull = 1;
END
IF @intValor IS NOT NULL
BEGIN
SET @isNotNull = 1;
END
SELECT @intValor as Valor, @notIsNull as NotIsNull, @isNotNull as IsNotNull
-- DECLARE @intValor INT
SET @intValor = NULL;
SET @notIsNull = 0;
SET @isNotNull = 0;
IF NOT @intValor IS NULL
BEGIN
SET @notIsNull = 1;
END
IF @intValor IS NOT NULL
BEGIN
SET @isNotNull = 1;
END
SELECT @intValor as Valor, @notIsNull as NotIsNull, @isNotNull as IsNotNull
view raw .sql hosted with ❤ by GitHub

Definitivamente el resultado indica que en SQL Server el "NOT" cumple la propiedad conmutativa y sin importar donde esta el "NOT" (cumpliendo la sintaxis) el resultado es el mismo, pues ya sea con datos nulos o no nulos la respuesta siempre es la misma.

Sueter... que la cuestión era fácil de resolver y no toca acudir al método de la duda.
Por: Camilo Martinez [€quiman]

Comentarios

Entradas populares