69 votes

comment vérifier le type de valeur dans postgres

Je veux vérifier le type de valeur dans postgres comme ceci:

 SELECT id,
       CASE 
         WHEN val_is_integer THEN (SOME_QUERY)
         WHEN val_isnot_integer THEN (ANOTHER_QUERY)
         ELSE 0
       END
  FROM test;

Comment faire ça?


Remarques: la valeur est de type varchar dans la table, et dans ce champ, la valeur est numérique et varchar ...

Exemple:

 ID | value
1 | test
2 | 10
3 | 12
4 | test123

8voto

nos Points 102226

Votre colonne de valeur est toujours de type varchar, il semble que vous vouliez vérifier si le contenu est un nombre/entier.

Vous pouvez le faire en créant une fonction, par exemple

 create function isdigits(text) returns boolean as '
select $1 ~ ''^(-)?[0-9]+$'' as result
' language sql;

(Cette fonction pourrait probablement être implémentée en essayant de convertir le texte en int, ou en utilisant la fonction int4() et en interceptant l'erreur qui se produit également, et en retournant NULL.)

Avec une telle fonction, vous pourriez faire :

 SELECT id,
       CASE 
         WHEN value IS NULL THEN 0
         WHEN isdigits(value) THEN (SOME_QUERY)
         ELSE (ANOTHER_QUERY)
       END
  FROM test;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X