HOWTO · PostgreSQL

Convierta un entero en una cadena en PostgreSQL

Este tutorial explica cómo convertir un entero en una cadena en PostgreSQL.

En esta página

Para convertir un entero en una cadena en PostgreSQL, conviértalo al tipo text con CAST(value AS text) o con la sintaxis de PostgreSQL value::text. Use cualquiera de las dos formas cuando una consulta necesite un valor de texto; use CONCAT cuando quiera combinar texto con valores de otros tipos. Los fragmentos SQL muestran la sintaxis; no se han ejecutado aquí ni se presenta una salida observada.

Convertir un entero a texto con CAST

CAST es sintaxis SQL estándar y deja explícitos los tipos de origen y destino. Por ejemplo, SELECT CAST(123 AS text) AS string_value; convierte el literal en un valor de tipo text cuyo contenido es 123. Sustituya el literal entero por una columna o una expresión, como CAST(order_id AS text), cuando la consulta necesite ese valor como texto. PostgreSQL llama text a su tipo de cadena de caracteres; «cadena» es el término general para el valor representado.

Usar el operador de conversión :: de PostgreSQL

PostgreSQL también admite el operador de conversión abreviado ::. SELECT 123::text AS string_value; convierte el mismo entero al mismo tipo que la forma con CAST. Elija la forma explícita si se lee con más claridad en SQL compartido, o el operador si encaja mejor con el resto de la consulta de PostgreSQL. Ambos expresan una conversión de tipo; ninguno sirve para aplicar formatos de presentación, como separadores o relleno.

Comparar una columna de texto con un entero en una cláusula WHERE

Suponga que quiz_score.score está definido como text, mientras que el valor que quiere comparar es un entero. Comparar score directamente con 100 mezcla tipos de texto y entero. Convierta a texto el lado entero para que ambos operandos tengan tipos compatibles: SELECT score FROM quiz_score WHERE score = CAST(100 AS text);. La forma abreviada de PostgreSQL es WHERE score = 100::text.

Esta comparación trata la columna como texto. Por ejemplo, los valores de texto 100 y 0100 son distintos, aunque ambos puedan representar el mismo número. Si la comparación debe ser numérica, convierta la columna solo si sus valores son enteros válidos; de lo contrario, la conversión puede fallar. Si la columna ya es numérica, compárela con un valor numérico en lugar de convertirlo a texto.

Usar CONCAT para combinar texto y números

CONCAT combina argumentos y convierte los que no son texto a texto para formar el resultado combinado. Por ejemplo, SELECT CONCAT('The number is ', 123); construye el texto The number is 123. Esto resulta útil para crear una etiqueta o un mensaje, pero no es una tercera forma de escribir una conversión aislada: use CAST o ::text cuando la consulta necesite el entero convertido. En PostgreSQL, CONCAT ignora los argumentos NULL. Para proporcionar un valor de reemplazo, use COALESCE(value::text, 'fallback') cuando value pueda ser de un tipo distinto de texto; la conversión hace que ambos argumentos de COALESCE tengan el mismo tipo.

Preguntas frecuentes

¿Cuál es la diferencia entre CAST y ::? CAST(value AS text) es sintaxis SQL estándar; value::text es una forma abreviada específica de PostgreSQL. Ambas convierten el valor a texto.

¿Se pueden convertir otros valores a texto? PostgreSQL admite conversiones desde muchos tipos, incluidas fechas y valores booleanos. La representación de texto resultante depende del tipo de origen y de cómo se represente al generar su salida.

¿Puedo usar una conversión en una cláusula WHERE? Sí. Convierta a texto el parámetro o la expresión entera al compararla con una columna de texto, como en score = 100::text. Asegúrese de que los valores comparados tengan el mismo significado y tipo previstos.