Resumen: en este tutorial, le mostraremos cómo usar el operador PostgreSQL CAST
para convertir un valor de un tipo a otro.
Introducción al operador PostgreSQL CAST
Hay muchos casos en los que se quiere convertir un valor de un tipo de datos a otro. PostgreSQL le proporciona el operador CAST
que le permite hacer esto.
Lo siguiente ilustra la sintaxis del tipo CAST
:
Code language: SQL (Structured Query Language) (sql)
En esta sintaxis:
- Primero, especifique una expresión que puede ser una constante, una columna de la tabla, una expresión que se evalúa a un valor.
- Luego, especifique el tipo de datos de destino al que desea convertir el resultado de la expresión.
PostgreSQL type cast :: operator
Además de la sintaxis type CAST
, puede utilizar la siguiente sintaxis para convertir un valor de un tipo en otro:
Code language: SQL (Structured Query Language) (sql)
Vea el siguiente ejemplo:
Code language: SQL (Structured Query Language) (sql)
Nótese que la sintaxis cast con el operador cast (::) es específica de PostgreSQL y no se ajusta al estándar SQL
Ejemplos CAST de PostgreSQL
Veamos algunos ejemplos de uso del operador CAST
para convertir un valor de un tipo en otro.
1) Ejemplo de conversión de una cadena a un entero
La siguiente sentencia convierte una constante de cadena a un entero:
Code language: SQL (Structured Query Language) (sql)
Si la expresión no se puede convertir al tipo de destino, PostgreSQL emitirá un error. Vea el siguiente ejemplo:
Code language: SQL (Structured Query Language) (sql)
Code language: PHP (php)
2) Cast a string to a date example
Este ejemplo utiliza el CAST
para convertir una cadena en una fecha:
Code language: SQL (Structured Query Language) (sql)
Primero, convertimos 2015-01-01
cadena literal en January 1st 2015
. Segundo, convertimos 01-OCT-2015
en October 1st 2015
.
3) Cast una cadena a un ejemplo doble
En el siguiente ejemplo, tratamos de convertir una cadena '10.2'
en un valor doble:
Code language: SQL (Structured Query Language) (sql)
Whoops, obtuvimos el siguiente mensaje de error:
Code language: PHP (php)
Para arreglar esto, es necesario utilizar DOUBLE PRECISION
en lugar de DOUBLE
como sigue:
Code language: SQL (Structured Query Language) (sql)
4) Cast a string to a boolean example
Este ejemplo utiliza el CAST()
para convertir la cadena ‘true’, ‘T’ a true y ‘false’, ‘F’ a false:
Code language: SQL (Structured Query Language) (sql)
Aquí está la salida:
5) Convertir una cadena en una marca de tiempo ejemplo
Este ejemplo utiliza el operador cast (::) para convertir una cadena en una marca de tiempo:
Code language: SQL (Structured Query Language) (sql)
6) Convertir una cadena en un intervalo ejemplo
Este ejemplo utiliza el operador cast para convertir una cadena en un intervalo:
Code language: SQL (Structured Query Language) (sql)
Aquí está la salida:
7) Usar CAST con datos de tabla ejemplo
Primero, crea una tabla ratings
que consta de dos columnas: id y rating. El tipo de datos de la columna rating
es VARCHAR(1)
:
Code language: SQL (Structured Query Language) (sql)
Segundo, inserte algunos datos de ejemplo en la tabla ratings
.
Code language: SQL (Structured Query Language) (sql)
Debido a que los requisitos cambian, utilizamos la misma tabla ratings
para almacenar las calificaciones como número, por ejemplo, 1, 2, 3 en lugar de A, B, y C:
Code language: SQL (Structured Query Language) (sql)
Así que la tabla ratings
almacena valores mixtos incluyendo numéricos y de cadena.
Code language: SQL (Structured Query Language) (sql)
Ahora, tenemos que convertir todos los valores de la columna rating
en enteros, todas las demás valoraciones A, B, C se mostrarán como cero. Para ello, se utiliza la expresión CASE
con el tipo CAST
como se muestra en la siguiente consulta:
Code language: SQL (Structured Query Language) (sql)
El CASE
comprueba la calificación, si coincide con el patrón de enteros, convierte la calificación en un entero, de lo contrario, devuelve 0.
En este tutorial, ha aprendido a utilizar PostgreSQL CAST
para convertir un valor de un tipo a otro.
- ¿Ha sido útil este tutorial?
- SíNo