Bonjour,
Si dans un select , je fais :
il me retourne '0'. Comment faire pour avoir '1' pour '' chaine vide ou Null ?Code:
1
2
3
4 CASE WHEN 'AA' != '' THEN '1' ELSE '0' END AS TEST1
Merci d'avance pour votre aide.
@+
Version imprimable
Bonjour,
Si dans un select , je fais :
il me retourne '0'. Comment faire pour avoir '1' pour '' chaine vide ou Null ?Code:
1
2
3
4 CASE WHEN 'AA' != '' THEN '1' ELSE '0' END AS TEST1
Merci d'avance pour votre aide.
@+
pour tester qu'une chaine et null il faut faire :
CASE WHEN CH1 IS NULL THEN 1 ...
Oui mais j'ai besoin de comparer des chaines qui viennent de 2 tables (colonnes) différentes.
tu dois nous expliquer un peu plus le besoin, à partir de quelle table, ...
Si je fais
il me retourne '1' normalCode:
1
2
3
4
5
6
7 SELECT CASE WHEN 'AAA' != 'A' THEN '1' ELSE '0' END AS TEST FROM DUAL
il me retourne '0' alors que moi j'attends '1'.Code:
1
2
3
4
5
6
7 SELECT CASE WHEN 'AAA' != ''THEN '1' ELSE '0' END AS TEST FROM DUAL
'AAA' est pour "moi" différent de ''
Oui c'est une solution mais j'aimerais bien pouvoir comparer les deux valeurs qui viennent de mes deux différentes colonnes (table1.colonne1 != table2.colonne2).
C'est doit quand même être possible, sous Oracle, ce genre de truc !!
Alors vous auriez dû commencer par poser la bonne question, au lieu de demander "Comment faire pour avoir '1' pour '' chaine vide ou Null ?" !
Il faut remplacer vos chaînes vides (NULL pour Oracle) par des chaînes non nulles avant de faire la comparaison :
Code:select * from t where nvl(a, 'VIDE')<>nvl(b, 'VIDE');
Pour comparer des chaines:
Merci.Code:
1
2
3
4
5
6
7
8
9
10
11
12 SELECT CASE WHEN NULLIF( UPPER(LTRIM(RTRIM(TO_CHAR('AAA')))) , UPPER(LTRIM(RTRIM(TO_CHAR('')))) ) IS NULL THEN 'PAS DE DIFFERENCE' ELSE 'DIFFERENCE' END AS TEST FROM DUAL
Bonne journée.