Varchar vs Texto en PostgreSQL

Bilal Shahid 15 febrero 2024
  1. el tipo de datos TEXTO en PostgreSQL
  2. el tipo de datos VARCHAR en PostgreSQL
  3. VARCHAR vs TEXT en PostgreSQL
Varchar vs Texto en PostgreSQL

Existen múltiples tipos de datos en PostgreSQL para almacenar diferentes tipos de datos como números enteros, fechas, cadenas, etc. Sin embargo, el tipo de datos cadena tiene tres tipos principales en PostgreSQL: CHAR, VARCHAR y TEXT.

En este artículo, discutiremos el VARCHAR y el TEXT en detalle y compararemos sus diferencias.

el tipo de datos TEXTO en PostgreSQL

El tipo de datos no tiene límite en la cantidad de texto que puede almacenar. Por lo tanto, puede insertar el texto de cualquier tipo en el campo con este tipo de datos, y no mostrará ningún error.

Se utiliza una palabra clave simple TEXT con el nombre de la variable que precede a la palabra clave para declarar un campo de este tipo de datos. A continuación se explica en detalle utilizando algunos ejemplos.

CREATE TABLE text_example (
    id int PRIMARY KEY,
    data TEXT NOT NULL
);

Esta tabla tiene INT y TEXT como dos tipos de datos para almacenar datos. Ahora vamos a insertar algunos datos.

INSERT INTO text_example
VALUES
(1,' This text has no size limit because stored in TEXT datatype');

SELECT * FROM text_example;

El siguiente resultado muestra que se almacenó con éxito en la variable, razón por la cual se usa el tipo de datos TEXT en la mayoría de los casos.

varchar vs texto en postgresql - salida uno

el tipo de datos VARCHAR en PostgreSQL

Este tipo de datos tiene dos variantes. VARCHAR, también llamado variación de caracteres (n), y VARCHAR(n). VARCHAR básicamente funciona como el tipo de datos TEXT con un nombre diferente si no se define un especificador de longitud.

Como no se define ningún límite, puede almacenar texto ilimitado en él. Podemos demostrarlo fácilmente usando el ejemplo anterior y cambiando el tipo de datos TEXT a VARCHAR.

CREATE TABLE varchar_example (
    id int PRIMARY KEY,
    data VARCHAR NOT NULL
);

Esta tabla tiene INT y VARCHAR como dos tipos de datos para almacenar datos. Ahora vamos a insertar algunos datos.

INSERT INTO varchar_example
VALUES
(1,' This text has no size limit because stored in VARCHAR datatype');

SELECT * FROM varchar_example;

El siguiente resultado muestra que se almacenó con éxito en la variable:

varchar vs texto en postgresql - salida dos

Como podemos ver, los datos se insertan correctamente, al igual que el tipo de datos TEXT.

Ahora, llegando a VARCHAR(n), las cosas se ponen un poco interesantes ya que ahora puede limitar la cantidad de caracteres insertados en VARCHAR(n) el tipo de datos. Se mostrará un error si intenta almacenar más de n caracteres en un tipo de datos VARCHAR(n).

Sin embargo, si los caracteres insertados (que exceden el límite) son todos espacios, entonces no habrá error, y esos espacios se truncarán con la cadena. Se puede demostrar a través de ejemplos de código y sus resultados de la siguiente manera:

CREATE TABLE Nvarchar_example (
    id int PRIMARY KEY,
    data VARCHAR(15) NOT NULL
);

Esta tabla tiene INT y VARCHAR(n) como dos tipos de datos para almacenar datos. Ahora vamos a insertar algunos datos.

INSERT INTO Nvarchar_example VALUES (1, 'Size is fifteen');
SELECT * FROM Nvarchar_example;

El siguiente resultado muestra que se almacenó con éxito en la variable:

varchar vs text en postgresql - salida tres

Como puede ver, no excedimos el límite especificado en este caso. Por lo tanto, almacenamos con éxito la cadena. Sin embargo, el siguiente ejemplo demostrará lo que sucederá si esa no es la situación.

CREATE TABLE Nvarchar_example2 (
    id int PRIMARY KEY,
    data VARCHAR(10) NOT NULL
);

Ahora vamos a insertar algunos datos.

INSERT INTO Nvarchar_example2 VALUES (1, 'Size is fifteen');

La salida, como puede ver, muestra un error con respecto al tamaño del tipo de datos:

varchar vs texto en postgresql - salida cuatro

Una razón importante para usar VARCHAR es que le permite restringir la cantidad de caracteres en un tipo de datos. Es útil cuando necesita restringir la inserción de una cadena.

PostgreSQL arrojará un error que impide agregar más caracteres que el límite definido por el especificador de longitud.

VARCHAR vs TEXT en PostgreSQL

Ahora, después de describir sus características arriba, creemos que podrá juzgar más claramente cuándo y cuándo no usar cualquiera de estos tipos de datos. Finalmente, discutiremos algunos escenarios comunes para fortalecer su comprensión.

En otras bases de datos, hay un gran impacto en el rendimiento cuando se usa cualquiera de estos tipos de datos, pero en PostgreSQL, no hay ninguna diferencia de rendimiento notable entre los dos tipos.

Puede haber algo de espacio de almacenamiento aumentado o algunos ciclos de CPU adicionales involucrados para validar el límite del especificador de longitud antes de insertar, pero eso es insignificante.

Como no hay un beneficio de rendimiento real que involucre a los dos tipos de datos, el único punto fundamental y esencial es si desea limitar el tamaño de los caracteres que se insertan o no.

El VARCHAR(n) proporciona validación y PostgreSQL mostrará un mensaje de error si cruza el límite definido.

Aparte de eso, no se recomienda usar VARCHAR normal sobre TEXT, ya que ambos brindan funcionalidades equivalentes, y TEXT tiene un nombre diferente que es fácil de recordar y está asociado con una longitud de cadena ilimitada.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub