sql >> Base de Datos >  >> RDS >> Oracle

¿Por qué Oracle 9i trata una cadena vacía como NULL?

Creo que la respuesta es que Oracle es muy, muy antiguo.

En los viejos tiempos, antes de que existiera un estándar SQL, Oracle tomó la decisión de diseño de que las cadenas vacías en VARCHAR /VARCHAR2 las columnas eran NULL y que solo había un sentido de NULL (hay teóricos relacionales que diferenciarían entre datos que nunca se han solicitado, datos donde existe la respuesta pero el usuario no la conoce, datos donde no hay respuesta, etc. todo de que constituyen algún sentido de NULL ).

En el momento en que apareció el estándar SQL y acordó que NULL y la cadena vacía eran entidades distintas, ya había usuarios de Oracle que tenían un código que asumía que los dos eran equivalentes. Entonces, Oracle básicamente se quedó con las opciones de romper el código existente, violar el estándar SQL o introducir algún tipo de parámetro de inicialización que cambiaría la funcionalidad de una cantidad potencialmente grande de consultas. Violar el estándar SQL (en mi humilde opinión) fue la menos perturbadora de estas tres opciones.

Oracle ha dejado abierta la posibilidad de que el VARCHAR el tipo de datos cambiaría en una versión futura para adherirse al estándar SQL (razón por la cual todos usan VARCHAR2 en Oracle, ya que se garantiza que el comportamiento de ese tipo de datos seguirá siendo el mismo en el futuro).