Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 17/08/2006, 17h30   #1
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2005
Messages : 61
Points : 30
Points : 30
Par défaut Concatenation avec NULL

Bonjour,

je voudrais concatener plusieur champs d'une même table, sachant que certain de ces champs ont pour valeur NULL.
Par exemple, voici ma table:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
mysql> SELECT * FROM temp;
+-------+-------+-------+
| chps1 | chps2 | chps3 |
+-------+-------+-------+
| tut   | tot   | tyt   |
| tat   | tit   | tyt   |
| tet   | NULL  | tyt   |
| tat   |       | tyt   |
+-------+-------+-------+
4 rows IN SET (0.02 sec)
Si j'utilise CONCAT(), je perds une ligne:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
mysql> SELECT concat(chps1,chps2,chps3) FROM temp;
+---------------------------+
| concat(chps1,chps2,chps3) |
+---------------------------+
| tuttottyt                 |
| tattittyt                 |
| NULL                      |
| tattyt                    |
+---------------------------+
4 rows IN SET (0.03 sec)
Si j'utilise concat_ws(), c'est mieu, mais sur la ligne 3, je perds un champs :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
mysql> SELECT concat_ws(';',chps1,chps2,chps3) FROM temp;
+----------------------------------+
| concat_ws(';',chps1,chps2,chps3) |
+----------------------------------+
| tut;tot;tyt                      |
| tat;tit;tyt                      |
| tet;tyt                          |
| tat;;tyt                         |
+----------------------------------+
4 rows IN SET (0.00 sec)
Existe t'il un moyen de concatener des chaines contenant NULL avec MySQL??

Stos
stos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2006, 18h00   #2
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Salut,

En remplaçant les valeurs NULL par une chaîne vide ?

Code :
SELECT CONCAT(chps1, IFNULL(chps2, ''),chps3) FROM temp;
Avec la même chose si champ1 et champ3 peuvent être NULL.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 09h40   #3
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2005
Messages : 61
Points : 30
Points : 30
Merci de ta réponse,
je vais essayer comme ça.
Sur ce coup là, MySQL est un peu verbeux .
stos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 20h33   #4
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Je ne sais pas comment se comportent les autres SGBD. Mais puisque NULL représente une absence de valeurs, je trouve normal que la plupart des expressions / fonctions retournent NULL si NULL est l'un des paramètres ou opérandes.

Dans ton cas, c'est en effet assez ennuyeux.
Biglo 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 16h19.


 
 
 
 
Partenaires

Hébergement Web