sql >> Base de Datos >  >> RDS >> Mysql

¿Cuáles son las diferencias entre Null, Zero y Blank en SQL?

El cero es un valor numérico. Es un definido con propiedades matemáticas precisas. (Puedes hacer aritmética en él...)

NULL significa la ausencia de cualquier valor. No puedes hacer nada con él excepto probarlo.

El espacio en blanco está mal definido. Significa diferentes cosas en diferentes contextos para diferentes personas. Por ejemplo:

  • Alguien podría referirse a un valor de cadena de longitud cero:es decir, uno sin caracteres ('' ).
  • Alguien podría referirse a un valor de cadena de longitud distinta de cero que consiste solo en caracteres no imprimibles (ESPACIO, TABULADOR, etc.). O tal vez consista en un solo carácter ESPACIO.
  • En algunos contextos (donde el carácter y la cadena son tipos diferentes), alguien podría significar un valor de carácter no imprimible.
  • Alguien podría incluso querer decir "cualquier cosa que no aparezca cuando lo imprima o muestre".

El punto es que "en blanco" no tiene un solo significado bien definido. Al menos no en la terminología de TI en inglés (nativo). Probablemente sea mejor evitarlo... si desea que otros profesionales de TI entiendan lo que quiere decir . (Y si alguien más usa el término y no es obvio por el contexto, ¡pídales que digan exactamente lo que quieren decir!)

En general, no podemos decir nada significativo sobre cómo se representan ZERO / NULL / BLANK, cuánta memoria ocupan ni nada por el estilo. Todo lo que podemos decir es que se representan de manera diferente entre sí... y que la representación real es dependiente de la implementación y el contexto .