|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 3 ![]() |
Je suis actuellement en train de travailler sur un projet Java avec base de donnée DB2.
La version de la base DB2 est v7.1 for os/390 DB2 attribut par defaut la valeur la plus haute à la valeur NULL ce qui me pose probleme pour mes requete SELECT. Exemple ---------- SELECT * FROM Table ORDER BY Prenom Nom Prenom AAA aaaa bbb bbbb ccc gggg tttt ddd Le blanc correspondant aux valeurs NULL. Je souhaiterai juste que ces valeurs apparaissent en premier Nom Prenom tttt ddd AAA aaaa bbb bbbb ccc gggg J'ai deja été voir sur des forumsainsi que regarder la doc technique d'IBM DB2 sur lesquels j'ai trouvé 2 "solutions": 1- Utilisation de ORDER BY Prenom [ASC] NULLS FIRST SELECT * FROM Table ORDER BY Prenom ASC NULLS FIRST Mais j'obtiens une erreur COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2] SQL0199N L'utilisation du mot réservé "NULLS" à la suite de "" est incorrecte. Parmi les marques attendues, on trouve : ", FOR WITH FETCH QUERYNO OPTIMIZE ". SQLSTATE=42601 2- Utilisation des fonctions OLAP j'ai teste directement ce ki etait defini dans la documentation DB2 UDB V7.1 SQL CookBook SELECT ID,YEARS AS YR,SALARY,DENSE_RANK() OVER(ORDER BY YEARS ASC NULLS FIRST) AS AF FROM STAFF WHERE ID < 100 ORDER BY YEARS,SALARY; en creant la table CREATE TABLE STAFF (ID SMALLINT NOT NULL ,NAME VARCHAR (9) ,DEPT SMALLINT ,JOB CHARACTER (5) ,YEARS SMALLINT ,SALARY DECIMAL (7,2) ,COMM DECIMAL (7,2)); L'erreur obtenu : COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2] SQL0104N Une marque inattendue "(" figure à la suite de "". Parmi les marques attendues, on trouve : ", FROM INTO ". SQLSTATE=42601 Si quelqu'un à deja rencontré ce probleme et peut m'apporter une réponse sur comment utiliser ces fonctionnalité et si celles ci existe bien dans cette version de DB2 ( V7.1 os/390) car selon les sites les reponses ce sont pas les memes. Merci |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 097 ![]() |
Les fonctions que vous citez n'existent pas en DB2 for z/OS.
Je pense qu'il vous faut passer soit par une fonction COALESCE soit par une expression CASE. Voir aussi : COALESCE |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2007 Messages : 3 ![]() |
Merci de votre reponse cela confirme ce que je pensai.
J'ai en effet utilisé la fonction CASE et ca marche tres bien SELECT Prenom,Nom FROM( SELECT Prenom,Nom, case when Prenom is null then 0 else 1 end as null_prenom FROM Table) x ORDER BY null_Prenom,Prenom,Nom La fonction COALESCE ne remplace la valeur d'un null seulement aprés que le ORDER soit appliqué donc conserve l'odre par defaut des NULL. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com