Ahora que estamos familiarizados con el concepto de tipos de datos de caracteres CHAR, VARCHAR y TEXT respectivamente en PostgreSQL, este artículo se centrará en resaltar la diferencia clave entre ellos.
¿Qué es el tipo de datos CHAR?
Este tipo de datos se utiliza para almacenar caracteres de longitud limitada. Se representa como char(n)
o character(n)
en PostgreSQL, donde n representa el límite de la longitud de los personajes.Si no se especifica n, el valor predeterminado es char(1)
o character(1)
.
¿Qué es el tipo de datos VARCHAR?
Este tipo de datos se utiliza para almacenar caracteres de longitud limitada. Se representa como varchar(n)
en PostgreSQL, donde n representa el límite de la longitud de los caracteres. Si no se especifica n, el valor predeterminado es varchar
, que tiene una longitud ilimitada.
¿Qué es el tipo de datos de TEXTO?
Este tipo de datos se utiliza para almacenar caracteres de longitud ilimitada. Se representa como text
en PostgreSQL. El rendimiento del varchar (sin n) y el texto son los mismos.
La siguiente tabla proporciona la diferencia principal entre CHAR, VARCHAR y TEXTO:
Comparison | CHAR | VARCHAR | TEXT |
---|---|---|---|
Syntax | CHAR(n) | VARCHAR(n) | TEXT |
Representation | char(n) or character(n) |
varchar(n) |
text |
Length of characters | Limited | Limited | Unlimited |
Spaces and padding | Gets truncado | Se trunca | Se mantiene intacto |
Si n no se especifica | n = 1 | n = infinito | El concepto de n no existe |
Ciclo de consulta | Ciclo extra para comprobar la longitud | Ciclo extra para comprobar la longitud | length |
Ejemplo:
Vamos a crear una nueva tabla(por ejemplo, pruebas de caracteres) para la demostración utilizando los siguientes comandos:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
Ahora insertemos una nueva fila en la tabla char_test usando el siguiente comando:
INSERT INTO character_tests (x, y, z)VALUES ( 'Geeks', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
En esta etapa PostgreSQL generará un error ya que el tipo de datos de la columna x es char(1) e intentamos insertar una cadena con tres caracteres en esta columna como se muestra a continuación:
ERROR: value too long for type character(1)
Así que, ahora vamos a arreglarlo.
INSERT INTO character_tests (x, y, z)VALUES ( 'G', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
Ahora, vamos a obtener el mismo error de la y de columna como el número de caracteres especificado es mayor que 10, como se muestra a continuación:
ERROR: value too long for type character(10)
Vamos a solucionarlo también.
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
Ahora que hemos logrado asignar correctamente los valores al tipo de datos de carácter, compruébelo ejecutando el siguiente comando:
SELECT * FROM character_tests;
Salida: