Oracle SQL CAS LORS de l'ORA-00932: incompatible types de données: attendu CHAR suis NUMÉRO 00932. 00000 - “incompatible types de données: taux de %s got %s”
Avoir d'erreur
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER 00932. 00000 - "inconsistent datatypes: expected %s got %s"
Lorsque j'exécute la requête suivante
SELECT distinct
CASE when t.cancelled = 'TRUE' then '0'
else t.amount END AMOUNT,
FROM table t
Si je le lance avec un nombre ou du texte pour le reste de sortie, comme ça, ça fonctionne.
SELECT distinct
CASE when t.cancelled = 'TRUE' then '0'
else 'xxx' END AMOUNT,
FROM table t
- Est t.montant d'un NOMBRE?
- c'est un nombre oui
- Dans ce cas, le convertir en un type char. (c'est à dire:
SELECT ... else TO_CHAR(t_amount) ...
) - ...ou de l'utilisation
then 0 else
- Grâce NullUser il a travaillé 🙂
Vous devez vous connecter pour publier un commentaire.
Utilisation
0
au lieu de'0'
. Quantité est un nombre, et les chiffres ne sont pas cités.En plus de la réponse par @RADAR,
La raison de l'erreur est que
t.amount
champ est unNUMBER
type de données et non pas unstring
.Votre
CASE
expression est à l'intérieur en essayant de s'adapter à unSTRING
dans unNUMBER
type de données.Comme l'a déjà suggéré dans le RADAR de la réponse zéro comme un nombre et non PAS comme une chaîne de caractères.
essayez d'utiliser
to_number(t.amount)