2009-08-13 15 views
13

Descargo de responsabilidad: Soy muy nuevo en SQL y bases de datos en general.[Mi] Tamaño SQL VARCHAR y terminación nula


Necesito crear un campo que almacenará un máximo de 32 caracteres de datos de texto. ¿"VARCHAR(32)" significa que tengo exactamente 32 caracteres para mis datos? ¿Debo reservar un carácter adicional para la terminación nula?

Realicé una prueba simple y parece que se trata de un búfer WYSIWYG. Sin embargo, quería obtener una respuesta concreta de personas que realmente saben lo que están haciendo.


Tengo un C [++] de fondo, por lo que esta pregunta está levantando las campanas de alarma en mi cabeza.

Respuesta

24

Sí, tienes 32 caracteres a tu disposición. SQL no se ocupa de cadenas terminadas como algunos lenguajes de programación.

+0

Gracias, eso es un alivio. –

1

Su tamaño de especificación VARCHAR es el tamaño máximo de sus datos, por lo que en este caso, 32 caracteres. Sin embargo, VARCHARS son un campo dinámico, por lo que el almacenamiento físico real utilizado es solo el tamaño de sus datos, más uno o dos bytes.

Si coloca una cadena de 10 caracteres en un VARCHAR (32), el almacenamiento físico será de 11 o 12 bytes (el manual le dirá la fórmula exacta).

Sin embargo, cuando MySQL trata con conjuntos de resultados (es decir, después de un SELECTO), se asignarán 32 bytes en memoria para ese campo para cada registro.

+0

+1 para la explicación de la asignación de memoria al SELECCIONAR el campo. Me pregunto cómo funciona con los campos TEXTO y BLOB ... – Leonel