validar vacio reemplazar por ejemplos convertir cero campo cambiar sql ruby oracle language-agnostic vb6

sql - vacio - ¿En cuántos idiomas Null no es igual a nada ni siquiera nulo?



validar campo null sql server (7)

¿En cuántos idiomas Null no es igual a nada ni siquiera nulo?


Es de esta manera en SQL (como un lenguaje lógico) porque null significa desconocido / indefinido.

Sin embargo, en lenguajes de programación (como, por ejemplo, C ++ o C #), un puntero / referencia nulo es un valor específico con un significado específico: nada.

Dos nada son equivalentes, pero dos incógnitas no lo son. La confusión proviene del hecho de que el mismo nombre (nulo) se usa para ambos conceptos.


MySQL tiene un operador de igualdad nulo seguro, <=>, que devuelve verdadero si ambos lados son iguales o ambos lados son nulos. Vea los documentos de MySQL .


Oracle es de esta manera.

SELECT * FROM dual WHERE NULL=null; --no rows returned


En VB6, la expresión Null = Null producirá Null lugar de True como es de esperar. Esto causará un error de tiempo de ejecución si intenta asignarlo a un booleano, sin embargo, si lo usa como condición de " If ... Then ", actuará como False . Además Null <> Null también producirá Null , entonces:

En VB6 puedes decir que Null no es igual a sí mismo (ni a nada más), ¡ni desigual!

Se supone que debes probarlo usando la función IsNull() .

VB6 también tiene otros valores especiales:

  • Nothing para referencias de objetos. Nothing = Nothing es un error de compilación. (se supone que debes compararlo usando " is ")
  • Missing parámetros opcionales que no han sido dados. No tiene representación literal, por lo que no puede escribir Missing = Missing . (la prueba es IsMissing(foo) )
  • Empty para variables no inicializadas. Este hace una prueba igual a sí mismo aunque también hay una función IsEmpty() .
  • ... avísame si he olvidado uno

Recuerdo estar un poco disgustado con VB.


En SQL, tendrías que hacer algo como:

WHERE column is NULL

más bien que

WHERE column = NULL


En C #, Nullable <bool> tiene propiedades interesantes con respecto a los operadores lógicos, pero el operador de igualdad es el mismo que otros tipos en ese idioma (es decir, ((bool?) Null == (bool?) Null) == verdadero) .

Para preservar el comportamiento en cortocircuito de los operadores lógicos en cortocircuito, y para preservar la coherencia con los operadores lógicos sin cortocircuito, el booleano nullable tiene algunas propiedades interesantes. Por ejemplo: true || null == verdadero. falso && null == falso, etc. Esto está en contradicción directa con otros lenguajes lógicos de tres valores como ANSI SQL .


Puedes hacer que Ruby funcione de esa manera:

class Null def self.==(other);false;end end n=Null print "Null equals nothing" if n!=Null