Simplemente no veo la razón funcional y sin problemas para que los valores nulos no sean comparables con otros valores u otros valores nulos, porque podemos compararlo claramente y decir que son iguales o no en nuestro contexto. Es gracioso. Solo por algunas conclusiones lógicas y consistencia, necesitamos molestarnos constantemente con eso. No es funcional, hágalo más funcional y deje que los filósofos y los científicos concluyan si es consistente o no y si tiene "lógica universal". :) Alguien puede decir que es debido a índices o algo más, dudo que esas cosas no puedan hacerse para admitir valores nulos iguales. Es lo mismo que comparar dos vasos vacíos, uno es vidrio de vid y otro es vaso de cerveza, no estamos comparando los tipos de objetos sino los valores que contienen, lo mismo que se podría comparar int y varchar, con nulo ' s aún más fácil, no es nada y lo que dos nada tienen en común, son lo mismo, claramente comparables por mí y por todos los demás que escriben sql, porque constantemente estamos rompiendo esa lógica al compararlos de manera extraña debido a algunos estándares ANSI. ¿Por qué no utilizar la potencia de la computadora para hacerlo por nosotros? Dudo que esto desacelere las cosas si todo lo relacionado se construye teniendo esto en cuenta. "No es nulo, no es nada", no es manzana, es apfel, vamos ... Funcionalmente es tu amigo y también hay lógica aquí. Al final, lo único que importa es la funcionalidad y el uso de valores nulos de esa manera brinda más o menos funcionalidad y facilidad de uso. ¿Es más útil? porque constantemente estamos rompiendo esa lógica al compararlos de manera extraña debido a algunos estándares ANSI. ¿Por qué no utilizar la potencia de la computadora para hacerlo por nosotros? Dudo que esto desacelere las cosas si todo lo relacionado se construye teniendo esto en cuenta. "No es nulo, no es nada", no es manzana, es apfel, vamos ... Funcionalmente es tu amigo y también hay lógica aquí. Al final, lo único que importa es la funcionalidad y el uso de valores nulos de esa manera brinda más o menos funcionalidad y facilidad de uso. ¿Es más útil? porque constantemente estamos rompiendo esa lógica al compararlos de manera extraña debido a algunos estándares ANSI. ¿Por qué no utilizar la potencia de la computadora para hacerlo por nosotros? Dudo que esto desacelere las cosas si todo lo relacionado se construye teniendo esto en cuenta. "No es nulo, no es nada", no es manzana, es apfel, vamos ... Funcionalmente es tu amigo y también hay lógica aquí. Al final, lo único que importa es la funcionalidad y el uso de valores nulos de esa manera brinda más o menos funcionalidad y facilidad de uso. ¿Es más útil? s no apple es apfel, vamos ... Funcionalmente es tu amigo y también hay lógica aquí. Al final, lo único que importa es la funcionalidad y el uso de valores nulos de esa manera brinda más o menos funcionalidad y facilidad de uso. ¿Es más útil? s no apple es apfel, vamos ... Funcionalmente es tu amigo y también hay lógica aquí. Al final, lo único que importa es la funcionalidad y el uso de valores nulos de esa manera brinda más o menos funcionalidad y facilidad de uso. ¿Es más útil?
Considera este código:
SELECT CASE WHEN NOT (1 = null or (1 is null and null is null)) THEN 1 ELSE 0 end
¿Cuántos de ustedes saben qué devolverá este código? Con o sin NOT devuelve 0. Para mí eso no es funcional y es confuso. En c # todo es como debería ser, las operaciones de comparación devuelven valor, lógicamente esto también produce valor, porque si no fuera así, no hay nada que comparar (excepto. Nada :)). Simplemente "dijeron": cualquier cosa en comparación con nulo "devuelve" 0 y eso crea muchas soluciones y dolores de cabeza.
Este es el código que me trajo aquí:
where a != b OR (a is null and b IS not null) OR (a IS not null and b IS null)
Solo necesito comparar si dos campos (en donde) tienen valores diferentes, podría usar la función, pero ...
<>
que está en la especificación 92, pero la mayoría de los proveedores admiten!=
y / o se incluye en una especificación posterior como 99 o 03.!=
hasta ~ 9i, según tengo entendido, lo que trajo mucha sintaxis ANSI-92. Mi creencia es que MySQL es similar, comenzando el soporte en 4.x.!=
podría haberse incluido en una especificación posterior como alternativa a<>
. No tengo en mis manos nuevas especificaciones, así que no puedo decir con certeza.WHERE MyColumn != NULL
oWHERE MyColumn = NULL
determinista? O, en otras palabras, ¿se garantiza que siempre devuelva 0 filas, sin importar siMyColumn
es anulable en la base de datos o no?!=
solo evalúa los valores, hacer algo comoWHERE MyColumn != 'somevalue'
esto no devolverá los registros NULL.