Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2006, 17h15   #1
Membre habitué
 
Inscription : juin 2004
Messages : 212
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 212
Points : 118
Points : 118
Par défaut [db2][sql]Transformer un character en numeric

Salut tout le monde,

Je voudrais une requête de ce style :
Code :
 SELECT * FROM matable WHERE dec(monchamp, 5, 3, ',')<26
Car si je ne transtype pas ce champ, lors de ma selection il me ressort des enregistrements avec comme valeur : 100,115,220 normal vu que le champ est un character!!!

L'erreur que db2 me met est : Erreur de selection du champs pour tant lorsque je fais :
Code :
1
2
 SELECT * FROM matable WHERE
 dec(monchamp, 5, 3, ',')<26 AND code_article='123456'
ça fonctionne (si article exsite bien sûr)

Si quelqu'un avait la réponse merci de me le dire!
yoyopi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 21h21   #2
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
La je vois pas
Essaie
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 08h15   #3
Membre habitué
 
Inscription : juin 2004
Messages : 212
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 212
Points : 118
Points : 118
J'ai essayé déjà hier mais j'ai quand même refai le test ce matin on sais jamais! mais ça ne marche toujours pas. Il me mets toujours erreur de selection de la zone.
yoyopi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 10h07   #4
Membre habitué
 
Inscription : juin 2004
Messages : 212
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 212
Points : 118
Points : 118
J'ai trouvé pourquoi ça plante, c'est parce que dans la table losrque j'ai une valeur non renseignée, dans la table c'est inscrit 'AD' et la fonction num plante dans ce cas la.

Donc comment je pourrais faire pour réussir dans mon when à remplacer AD par 0 pour pouvoir le comparer à un chiffre.
yoyopi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2006, 12h43   #5
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Essaie

Code :
1
2
3
4
5
6
SELECT *
 FROM matable 
 WHERE ( WHEN monchamp='AD' 
                  THEN 0 
                  ELSE  dec(monchamp, 5, 3, ',')
             END ) < 26
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2006, 14h35   #6
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 096
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 096
Points : 1 704
Points : 1 704
Citation:
Envoyé par jab
Essaie

Code :
1
2
3
4
5
6
SELECT *
 FROM matable 
 WHERE ( WHEN monchamp='AD' 
                  THEN 0 
                  ELSE  dec(monchamp, 5, 3, ',')
             END ) < 26
Il ne manquerait pas un CASE par hasard ...
du style :

Code :
1
2
3
4
5
6
SELECT *
 FROM matable 
 WHERE ( CASE WHEN monchamp='AD' 
                  THEN 0 
                  ELSE  dec(monchamp, 5, 3, ',')
             END ) < 26
Et puis si jamais on a 'AE' dans monchamp, bien sûr ça ne marche plus ...
Moi je trouve qu'on atteint les limites du SQL dans ce cas de figure et qu'il faut mieux passer par un programme (quelque soit le langage) avec du SQL imbriqué ...
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2006, 15h57   #7
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Citation:
Envoyé par Luc Orient
Il ne manquerait pas un CASE par hasard ...


C'est clair que c'est déjà du SQL de bon niveau. Par programme oui pourquoi pas mais si le SQL complexe a été créé pourquoi ne pas l'utiliser. Le tout est de voir selon l'infrastructure ce qui donne les meilleurs performances.
Par contre si monchamp était numérique comme il semble qu'il aurait du l'être.
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 08h20   #8
Membre habitué
 
Inscription : juin 2004
Messages : 212
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 212
Points : 118
Points : 118
Merci pour vos réponses. J'ai posté en même temps sur le forum SQL
ce qui m'a permis de trouver une réponse même si la vôtre est plus simple!!

Encore merci.
Je laisse le lien pour ceux qui voudraient allez voir :

http://www.developpez.net/forums/sho...d.php?t=133208
yoyopi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h44.


 
 
 
 
Partenaires

Hébergement Web