tipos postgres float example ejemplos datos data postgresql casting

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.