|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() scrutin scrtin Inscription : août 2010 Messages : 24 ![]() |
Bonjour la communauté
Je voudrais faire une requête en concaténant des champs de type string et des champs de type integer ou long. J'utilise DB2 comme SGBD J'ai codeEmp de type string , numero de type integer et codService de type string la requete Code :
SELECT (codeEmp|| ' '||numero|| ' '||codService ) AS identifiant FROM employe Code :
Error: SQL problems:DB2 SQL error: SQLCODE: -440, SQLSLATE: 42884, SQLERRMC: ||; FUNCTION Code :
SELECT (codeEmp|| ' '||char(numero)|| ' '||codService ) AS identifiant FROM employe Comment éliminer ses espaces blancs ou bien avez vous une autre méthode Merci |
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
Bonjour,
selon votre version de db2 ceci peut ne pas marcher, en fait il faudrait caster votre integer en varchar : Code :
Si l'une ou l'autre de ces deux solutions ne fonctionnent pas il vous restera TRIM : Code :
|
||||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() scrutin scrtin Inscription : août 2010 Messages : 24 ![]() |
Bonjour merci de votre réponse mais aucun des 3 solutions ne marchent
|
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
Dans ce cas expliquez, avec un exemple, ce que veut dire cette phrase :
Citation:
|
|
|
|
00
|
|
|
#5 |
![]() ![]() |
Dans le premier message de scrutin, le message d'erreur n'apparaît pas en entier.
Ne serait-ce pas un problème d'opérateur || qui ne serait peut-être pas reconnu par DB2 ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#6 |
|
Invité de passage
![]() scrutin scrtin Inscription : août 2010 Messages : 24 ![]() |
si nous voulons creer la table avec codeEmp varchar(20), numero int(5) codService(10).
si nous avons comme données cdeEmp='ING' numero=23 codeService='INF' avec la requete : Code :
SELECT (codeEmp|| ' '||char(numero)|| ' '||codService ) AS identifiant FROM employe je veux éliminer ces espaces blanc pour avoir 'ING23INF' merci |
|
|
00
|
|
|
#7 |
![]() ![]() |
Ben retire les de ta requête !
Code :
SELECT (codeEmp || char(numero) || codService ) AS identifiant FROM employe
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#8 |
|
Invité de passage
![]() scrutin scrtin Inscription : août 2010 Messages : 24 ![]() |
Bonjour, je n'ai pas compris ce que je dois éliminer. Si ce sont les espaces que vous faites allusion je voudrais savoir comment faire
|
|
|
00
|
|
|
#9 |
![]() ![]() |
Compare les deux requêtes...
La tienne : Code :
SELECT (codeEmp|| ' '||char(numero)|| ' '||codService ) AS identifiant FROM employe Code :
SELECT (codeEmp || char(numero) || codService ) AS identifiant FROM employe Tu concatènes codeEmpl puis un espace puis char(numero) puis un espace puis codService. Je concatène seulement les trois colonnes sans espaces.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#10 |
|
Invité de passage
![]() scrutin scrtin Inscription : août 2010 Messages : 24 ![]() |
Ha oui je vous comprend. En réalité entre (codeEmp et numero) et (numero et codService) il doit y avoir un seul espace blanc et non plusieurs d'ou les (|| ' '|). La n'est pas mon problème.
Le champ nombre a été créé sur une longueur de 5 caractères. Sur le résultat quelque soit la longueur de la valeur du champ nombre tous les 5 caractères alloué au nombre est utilisé en complétant par des espace blancs si la longueur de la valeur es inférieur a 5. en exemple si "_" est considéré comme un espace blanc nous aurons comme résultat ING_23____INF alors qu'en réalité nous devons avoir ING_23_INF J'espère que cette fois ci vous avez compris Merci |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
Mais avez-vous testez ce que je vous ai proposé vu que cette solution marche ?
En SQL j'entend bien, si après vous avez un programme qui génère la sortie le problème viendra peut-être de là ... (DDS en l'occurance) |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Code :
SELECT (codeEmp|| ' '||rtrim(char(numero))|| ' '||codService ) AS identifiant FROM employe |
|
|
00
|
|
|
#13 |
![]() ![]() |
Si la fonction char existe, je mets ma main à couper que la fonction varchar existe aussi.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#14 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Bah sous Oracle, to_char() existe, et pas to_varchar() donc moi je serait un peu moins sûr de moi, j'y tiens à mes mains
Bon, ceci dit, sous Oracle, to_char() génère un varchar2
|
|
|
00
|
|
|
#15 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 641 ![]() |
C'est du DB2, les fonctions existent si sa version est assez élevé.
Dans tous les cas le trim(char(mon_integer)) fonctionnent depuis des lustres. |
|
|
00
|
|
|
#16 |
![]() ![]() |
J'ai été malhonnête j'avais vérifié au préalable, cela dit ne travaillant pas avec DB2 je crois savoir qu'il existe plusieurs versions pas forcément équivalentes entre elles, donc peut-être que cette fonction n'existe pas sur toutes les versions :
http://publib.boulder.ibm.com/infoce...n/r0000869.htm
__________________
Email : http://scr.im/waldar |
|
00
|
Copyright © 2000-2012 - www.developpez.com