J'importe des données à partir d'une table qui a des flux bruts dans Varchar, j'ai besoin d'importer une colonne dans varchar dans une colonne de chaîne. J'ai essayé d'utiliser <column_name>::integer
aussi bien que to_number(<column_name>,'9999999')
mais j'obtiens des erreurs, car il y a quelques champs vides, je dois les récupérer comme vides ou nuls dans la nouvelle table.
Veuillez me faire savoir s'il existe une fonction pour le même.
postgresql
casting
Vijay DJ
la source
la source
Réponses:
Wild guess: Si votre valeur est une chaîne vide, vous pouvez utiliser NULLIF pour la remplacer par NULL:
la source
Vous pouvez même aller plus loin et restreindre ce champ fusionné comme par exemple: -
la source
Si vous devez traiter les colonnes vides comme des
NULL
s, essayez ceci:D'un autre côté, si vous avez des
NULL
valeurs à éviter, essayez:Je suis d'accord, un message d'erreur aiderait beaucoup.
la source
La seule façon de réussir à ne pas avoir d'erreur à cause de NULL, de caractères spéciaux ou d'une chaîne vide est de faire ceci:
la source
WHERE <column> != NULL
?Je ne suis pas en mesure de commenter (trop peu de réputation? Je suis assez nouveau) sur le post de Lukas.
Sur ma configuration PG
to_number(NULL)
ne fonctionne pas, donc ma solution serait:la source
NULLIF()
approche moins verbeuse . La norme définit en fait NULLIF comme une forme du prédicat CASE.Si la valeur contient des caractères non numériques, vous pouvez convertir la valeur en entier comme suit:
L'opérateur CASE vérifie la <colonne>, s'il correspond au modèle entier, il convertit le taux en entier, sinon il retourne 0
la source
vous pouvez utiliser cette requête
la source
Problème courant
Tapez naïvement en convertissant n'importe quelle chaîne en un entier comme ceci
Résultat souvent la fameuse erreur:
Problème
PostgreSQL n'a pas de fonction prédéfinie pour convertir en toute sécurité n'importe quelle chaîne en un entier.
Solution
Créez une fonction définie par l'utilisateur inspirée de la fonction intval () de PHP .
Usage
la source
Mes deux cents pour convertir n'importe quelle chaîne en entier:
Basé sur https://www.postgresqltutorial.com/regexp_replace/ .
la source