tipos tipo tabla numericos datos dato caracteristicas sql oracle unicode varchar

tabla - tipos de datos numericos sql



Diferencia entre BYTE y CHAR en los tipos de datos de columna (5)

Dependiendo de la configuración del sistema, el tamaño de CHAR medido en BYTES puede variar. En tus ejemplos:

  1. Limita el campo a 11 BYTE
  2. Limita el campo a 11 personas del CHAR
Conclusión: 1 CHAR no es igual a 1 BYTE.

En Oracle, ¿cuál es la diferencia entre:

CREATE TABLE CLIENT ( NAME VARCHAR2(11 BYTE), ID_CLIENT NUMBER )

y

CREATE TABLE CLIENT ( NAME VARCHAR2(11 CHAR), -- or even VARCHAR2(11) ID_CLIENT NUMBER )


No estoy seguro ya que no soy un usuario de Oracle, pero supongo que la diferencia radica en el uso de conjuntos de caracteres de varios bytes, como Unicode (UTF-16/32). En este caso, 11 Bytes podría representar menos de 11 caracteres.

Además, esos tipos de campo podrían tratarse de manera diferente con respecto a los caracteres acentuados o mayúsculas y minúsculas, por ejemplo ''binaryField (ete) = "été"'' no coincidirá con ''charField (ete) = "été"'' might (de nuevo no estoy seguro de Oracle) .


Supongamos que el conjunto de caracteres de la base de datos es UTF-8, que es la configuración recomendada en las versiones recientes de Oracle. En este caso, algunos caracteres toman más de 1 byte para almacenar en la base de datos.

Si define el campo como VARCHAR2(11 BYTE) , Oracle puede usar hasta 11 bytes para el almacenamiento, pero es posible que no pueda almacenar 11 caracteres en el campo, porque algunos de ellos toman más de un byte para almacenar, por ejemplo caracteres no ingleses

Al definir el campo como VARCHAR2(11 CHAR) le dice a Oracle que puede usar suficiente espacio para almacenar 11 caracteres, sin importar cuántos bytes se necesiten para almacenar cada uno. Un solo carácter puede requerir hasta 4 bytes.


Uno tiene exactamente espacio para 11 bytes, el otro para exactamente 11 caracteres. Algunos conjuntos, como las variantes Unicode, pueden usar más de un byte por carácter, por lo tanto, el campo de 11 bytes puede tener espacio para menos de 11 caracteres dependiendo de la codificación.

Ver también http://www.joelonsoftware.com/articles/Unicode.html