J'ai un problème tout bête.
J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3
colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec
une '' à la place)
Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en
'' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style :
CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN
'' ELSE MaCOl2 END + etc...
Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style :
SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+
IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
zarko
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As MaCol123
"Renaud" a écrit dans le message de news:%
Bonjour,
J'ai un problème tout bête. J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
une '' à la place) Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style : CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN '' ELSE MaCOl2 END + etc... Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style : SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
D'avance merci.
Renaud
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As MaCol123
"Renaud" <renaud@renaud.com> a écrit dans le message de
news:%23qinaiBaEHA.644@tk2msftngp13.phx.gbl...
Bonjour,
J'ai un problème tout bête.
J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3
colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
une '' à la place)
Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en
'' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style :
CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN
'' ELSE MaCOl2 END + etc...
Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style :
SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+
IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As MaCol123
"Renaud" a écrit dans le message de news:%
Bonjour,
J'ai un problème tout bête. J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
une '' à la place) Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style : CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN '' ELSE MaCOl2 END + etc... Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style : SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
D'avance merci.
Renaud
Patrice
Ou encore vérifie que tu as effectivement besoin d'avoir NULL dans ces chaînes. Si non, ne pas autoriser NULL et définir une chaîne vide comme valeur par défaut pour ces champs...
--
"zarko" a écrit dans le message de news:40f29f39$0$30287$
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As
MaCol123
"Renaud" a écrit dans le message de news:% > Bonjour, > > J'ai un problème tout bête. > J'ai une vue dont un extrait de la selection ressemble à ceci : > > SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123 > > MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 > colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est > pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec > une '' à la place) > Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL
en
> '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar)) > > J'ai donc essayé un truc du style : > CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL
THEN
> '' ELSE MaCOl2 END + etc... > Mais le WHEN NULL n'a pas l'air de vouloir fonctionner. > > Sous Access, j'aurais écrit un truc du style : > SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ > IIf(IsNull(MaCol3),'',MaCol3) As MaCol123 > > Mais sous SQL Serveur, en tant que novice, je sèche. > > Une âme charitable et éclairée pourait-elle m'éclairer ? > > D'avance merci. > > Renaud > >
Ou encore vérifie que tu as effectivement besoin d'avoir NULL dans ces
chaînes. Si non, ne pas autoriser NULL et définir une chaîne vide comme
valeur par défaut pour ces champs...
--
"zarko" <zarko@free.fr> a écrit dans le message de
news:40f29f39$0$30287$636a15ce@news.free.fr...
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As
MaCol123
"Renaud" <renaud@renaud.com> a écrit dans le message de
news:%23qinaiBaEHA.644@tk2msftngp13.phx.gbl...
> Bonjour,
>
> J'ai un problème tout bête.
> J'ai une vue dont un extrait de la selection ressemble à ceci :
>
> SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
>
> MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3
> colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
> pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
> une '' à la place)
> Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL
en
> '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
>
> J'ai donc essayé un truc du style :
> CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL
THEN
> '' ELSE MaCOl2 END + etc...
> Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
>
> Sous Access, j'aurais écrit un truc du style :
> SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+
> IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
>
> Mais sous SQL Serveur, en tant que novice, je sèche.
>
> Une âme charitable et éclairée pourait-elle m'éclairer ?
>
> D'avance merci.
>
> Renaud
>
>
Ou encore vérifie que tu as effectivement besoin d'avoir NULL dans ces chaînes. Si non, ne pas autoriser NULL et définir une chaîne vide comme valeur par défaut pour ces champs...
--
"zarko" a écrit dans le message de news:40f29f39$0$30287$
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As
MaCol123
"Renaud" a écrit dans le message de news:% > Bonjour, > > J'ai un problème tout bête. > J'ai une vue dont un extrait de la selection ressemble à ceci : > > SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123 > > MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 > colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est > pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec > une '' à la place) > Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL
en
> '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar)) > > J'ai donc essayé un truc du style : > CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL
THEN
> '' ELSE MaCOl2 END + etc... > Mais le WHEN NULL n'a pas l'air de vouloir fonctionner. > > Sous Access, j'aurais écrit un truc du style : > SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ > IIf(IsNull(MaCol3),'',MaCol3) As MaCol123 > > Mais sous SQL Serveur, en tant que novice, je sèche. > > Une âme charitable et éclairée pourait-elle m'éclairer ? > > D'avance merci. > > Renaud > >
Renaud
C'est parfait, merci beacoup. Exactement ce qu'il me fallait.
"zarko" a écrit dans le message de news:40f29f39$0$30287$
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As
MaCol123
"Renaud" a écrit dans le message de news:% > Bonjour, > > J'ai un problème tout bête. > J'ai une vue dont un extrait de la selection ressemble à ceci : > > SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123 > > MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 > colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est > pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec > une '' à la place) > Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL
en
> '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar)) > > J'ai donc essayé un truc du style : > CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL
THEN
> '' ELSE MaCOl2 END + etc... > Mais le WHEN NULL n'a pas l'air de vouloir fonctionner. > > Sous Access, j'aurais écrit un truc du style : > SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ > IIf(IsNull(MaCol3),'',MaCol3) As MaCol123 > > Mais sous SQL Serveur, en tant que novice, je sèche. > > Une âme charitable et éclairée pourait-elle m'éclairer ? > > D'avance merci. > > Renaud > >
C'est parfait, merci beacoup. Exactement ce qu'il me fallait.
"zarko" <zarko@free.fr> a écrit dans le message de
news:40f29f39$0$30287$636a15ce@news.free.fr...
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As
MaCol123
"Renaud" <renaud@renaud.com> a écrit dans le message de
news:%23qinaiBaEHA.644@tk2msftngp13.phx.gbl...
> Bonjour,
>
> J'ai un problème tout bête.
> J'ai une vue dont un extrait de la selection ressemble à ceci :
>
> SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
>
> MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3
> colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
> pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
> une '' à la place)
> Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL
en
> '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
>
> J'ai donc essayé un truc du style :
> CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL
THEN
> '' ELSE MaCOl2 END + etc...
> Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
>
> Sous Access, j'aurais écrit un truc du style :
> SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+
> IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
>
> Mais sous SQL Serveur, en tant que novice, je sèche.
>
> Une âme charitable et éclairée pourait-elle m'éclairer ?
>
> D'avance merci.
>
> Renaud
>
>
C'est parfait, merci beacoup. Exactement ce qu'il me fallait.
"zarko" a écrit dans le message de news:40f29f39$0$30287$
Utilise plutot :
SELECT IsNull(MaCol1,'') + IsNull(MaCol2,'') + IsNull(MaCol3,'') As
MaCol123
"Renaud" a écrit dans le message de news:% > Bonjour, > > J'ai un problème tout bête. > J'ai une vue dont un extrait de la selection ressemble à ceci : > > SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123 > > MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 > colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est > pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec > une '' à la place) > Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL
en
> '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar)) > > J'ai donc essayé un truc du style : > CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL
THEN
> '' ELSE MaCOl2 END + etc... > Mais le WHEN NULL n'a pas l'air de vouloir fonctionner. > > Sous Access, j'aurais écrit un truc du style : > SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ > IIf(IsNull(MaCol3),'',MaCol3) As MaCol123 > > Mais sous SQL Serveur, en tant que novice, je sèche. > > Une âme charitable et éclairée pourait-elle m'éclairer ? > > D'avance merci. > > Renaud > >
Steve Kass
Renaud,
CASE MaCol1 When NULL ... fait la comparaison (MaCol1 = NULL), ce qui est fausse. Il faut evaluer l'expression X IS NULL, non X = NULL pour déterminer si X est nulle. Essayez CASE WHEN MaCol1 IS NULL THEN '' ELSE MaCol1 END ...
Steve Kass Drew University
Renaud wrote:
Bonjour,
J'ai un problème tout bête. J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec une '' à la place) Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style : CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN '' ELSE MaCOl2 END + etc... Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style : SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
D'avance merci.
Renaud
Renaud,
CASE MaCol1 When NULL ... fait la comparaison (MaCol1 = NULL), ce qui
est fausse. Il faut evaluer l'expression X IS NULL, non X = NULL pour
déterminer si X est nulle. Essayez CASE WHEN MaCol1 IS NULL THEN ''
ELSE MaCol1 END ...
Steve Kass
Drew University
Renaud wrote:
Bonjour,
J'ai un problème tout bête.
J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3
colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec
une '' à la place)
Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en
'' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style :
CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN
'' ELSE MaCOl2 END + etc...
Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style :
SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+
IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
CASE MaCol1 When NULL ... fait la comparaison (MaCol1 = NULL), ce qui est fausse. Il faut evaluer l'expression X IS NULL, non X = NULL pour déterminer si X est nulle. Essayez CASE WHEN MaCol1 IS NULL THEN '' ELSE MaCol1 END ...
Steve Kass Drew University
Renaud wrote:
Bonjour,
J'ai un problème tout bête. J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce n'est pas ce que je veux, je veux concaténer toutes les colonnes, même NULL (avec une '' à la place) Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style : CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN '' ELSE MaCOl2 END + etc... Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style : SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
D'avance merci.
Renaud
Christophe KERHOUSSE
Salut,
Il existe une option à activer pour la connection en cours (par défaut est sur ON) : SET CONCAT_NULL_YIELDS_NULL OFF
Ainsi la concaténation 'toto' + NULL renvoie 'toto'
"Renaud" a écrit dans le message de news:%
Bonjour,
J'ai un problème tout bête. J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
une '' à la place) Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style : CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN '' ELSE MaCOl2 END + etc... Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style : SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
D'avance merci.
Renaud
Salut,
Il existe une option à activer pour la connection en cours (par défaut est
sur ON) :
SET CONCAT_NULL_YIELDS_NULL OFF
Ainsi la concaténation 'toto' + NULL renvoie 'toto'
"Renaud" <renaud@renaud.com> a écrit dans le message de
news:%23qinaiBaEHA.644@tk2msftngp13.phx.gbl...
Bonjour,
J'ai un problème tout bête.
J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3
colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
une '' à la place)
Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en
'' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style :
CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN
'' ELSE MaCOl2 END + etc...
Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style :
SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+
IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?
Il existe une option à activer pour la connection en cours (par défaut est sur ON) : SET CONCAT_NULL_YIELDS_NULL OFF
Ainsi la concaténation 'toto' + NULL renvoie 'toto'
"Renaud" a écrit dans le message de news:%
Bonjour,
J'ai un problème tout bête. J'ai une vue dont un extrait de la selection ressemble à ceci :
SELECT MaCol1 + MaCol2 + MaCol3 As MaCol123
MaCol1 2 et 3 sont des varchar. Mon problème est que si l'une de ces 3 colonnes contient NULL, la concaténation des trois me renvoie NULL. Ce
n'est
pas ce que je veux, je veux concaténer toutes les colonnes, même NULL
(avec
une '' à la place) Visiblement, SQL Serveur ne veut pas me faire un CAST implicite de NULL en '' (ni explicite d'ailleur, j'ai essayé avec CAST (MaCOl1 as varchar))
J'ai donc essayé un truc du style : CASE MaCOl1 When NULL THEN '' ELSE MaCOl1 END + CASE MaCOl2 When NULL THEN '' ELSE MaCOl2 END + etc... Mais le WHEN NULL n'a pas l'air de vouloir fonctionner.
Sous Access, j'aurais écrit un truc du style : SELECT IIf(IsNull(MaCol1),'',MaCol1) + IIf(IsNull(MaCol2),'',MaCol2)+ IIf(IsNull(MaCol3),'',MaCol3) As MaCol123
Mais sous SQL Serveur, en tant que novice, je sèche.
Une âme charitable et éclairée pourait-elle m'éclairer ?