float - tipos de datos en postgresql pdf
Cadena de transmisiĆ³n a entero-Postgres (6)
Estoy importando datos de una tabla que tiene feeds crudos en Varchar, necesito importar una columna en varchar en una columna de cadena. Intenté usar el <column_name>::integer
así como to_number(<column_name>,''9999999'')
pero recibo errores, ya que hay algunos campos vacíos, necesito recuperarlos como vacíos o nulos en la nueva tabla .
Por favor, hágamelo saber si hay una función para el mismo.
Conjetura salvaje: si su valor es una cadena vacía, puede usar NULLIF para reemplazarla por NULL:
SELECT
NULLIF(your_value, '''')::int
Incluso puede ir más allá y restringir en este campo combinado como, por ejemplo:
SELECT CAST(coalesce(<column>, ''0'') AS integer) as new_field
from <table>
where CAST(coalesce(<column>, ''0'') AS integer) >= 10;
La única forma en que puedo tener éxito al no tener un error debido a NULL, o caracteres especiales o cadenas vacías es haciendo esto:
SELECT REGEXP_REPLACE(COALESCE(<column>, ''0''), ''[^0-9]*'' ,''0'')::integer FROM table
No puedo hacer ningún comentario (¿muy poca reputación? Soy bastante nuevo) en la publicación de Lukas.
En mi configuración PG to_number(NULL)
no funciona, entonces mi solución sería:
SELECT CASE WHEN column = NULL THEN NULL ELSE column :: Integer END
FROM table
Si el valor contiene caracteres no numéricos, puede convertir el valor en un entero de la siguiente manera:
SELECT CASE WHEN <column>~E''^//d+$'' THEN CAST (<column> AS INTEGER) ELSE 0 END FROM table;
El operador CASE comprueba la <columna>, si coincide con el patrón entero, convierte la velocidad en un entero; de lo contrario, devuelve 0
Si necesita tratar columnas vacías como NULL
s, intente esto:
SELECT CAST(nullif(<column>, '''') AS integer);
Por otro lado, si tiene valores NULL
que debe evitar, intente:
SELECT CAST(coalesce(<column>, ''0'') AS integer);
Estoy de acuerdo, el mensaje de error ayudaría mucho.