Fixer CONCAT_NULL_YIELDS_NULL au niveau base de données
4 réponses
HervéR
Bonjour tout le monde,
Je suis en train d'étudier le passage d'une bdd actuellement au niveau de
compatibilité 65 au niveau 80.
Ce qui m'embête le plus, c'est le fait qu'en 80, l'option
CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON.
Ce qui fait que la requête
select null + 'coucou'
renvoie
NULL
J'ai essayé de modifier ce paramètre pour la base de données, mais ce la ne
fonctionne pas :(
Voici comment j'ai procédé :
Use Master
Go
Alter Database MaBase
Set CONCAT_NULL_YIELDS_NULL OFF
Go
Un
Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat')
me renvoie pourtant bien 0
mais un
Use MaBase
select null + 'coucou'
renvoie hélàs toujours
NULL
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
Fred BROUARD
La norme SQL prévoit que le NULL est "absorbant". Autement dit toute opération avec présence d'une colonne NULL doit conduire à un résultat NULL...
Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2 machines en utilisant notamment la fonction coalesce.
A +
HervéR a écrit:
Bonjour tout le monde,
Je suis en train d'étudier le passage d'une bdd actuellement au niveau de compatibilité 65 au niveau 80. Ce qui m'embête le plus, c'est le fait qu'en 80, l'option CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. Ce qui fait que la requête select null + 'coucou' renvoie NULL J'ai essayé de modifier ce paramètre pour la base de données, mais ce la ne fonctionne pas :( Voici comment j'ai procédé : Use Master Go Alter Database MaBase Set CONCAT_NULL_YIELDS_NULL OFF Go
Un Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') me renvoie pourtant bien 0 mais un Use MaBase select null + 'coucou' renvoie hélàs toujours NULL
J'ai dû louper quelque chose, mais quoi ?
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
La norme SQL prévoit que le NULL est "absorbant". Autement dit toute opération avec présence d'une colonne NULL doit
conduire à un résultat NULL...
Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2 machines en utilisant notamment la fonction
coalesce.
A +
HervéR a écrit:
Bonjour tout le monde,
Je suis en train d'étudier le passage d'une bdd actuellement au niveau de
compatibilité 65 au niveau 80.
Ce qui m'embête le plus, c'est le fait qu'en 80, l'option
CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON.
Ce qui fait que la requête
select null + 'coucou'
renvoie
NULL
J'ai essayé de modifier ce paramètre pour la base de données, mais ce la ne
fonctionne pas :(
Voici comment j'ai procédé :
Use Master
Go
Alter Database MaBase
Set CONCAT_NULL_YIELDS_NULL OFF
Go
Un
Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat')
me renvoie pourtant bien 0
mais un
Use MaBase
select null + 'coucou'
renvoie hélàs toujours
NULL
J'ai dû louper quelque chose, mais quoi ?
--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
La norme SQL prévoit que le NULL est "absorbant". Autement dit toute opération avec présence d'une colonne NULL doit conduire à un résultat NULL...
Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2 machines en utilisant notamment la fonction coalesce.
A +
HervéR a écrit:
Bonjour tout le monde,
Je suis en train d'étudier le passage d'une bdd actuellement au niveau de compatibilité 65 au niveau 80. Ce qui m'embête le plus, c'est le fait qu'en 80, l'option CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. Ce qui fait que la requête select null + 'coucou' renvoie NULL J'ai essayé de modifier ce paramètre pour la base de données, mais ce la ne fonctionne pas :( Voici comment j'ai procédé : Use Master Go Alter Database MaBase Set CONCAT_NULL_YIELDS_NULL OFF Go
Un Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') me renvoie pourtant bien 0 mais un Use MaBase select null + 'coucou' renvoie hélàs toujours NULL
J'ai dû louper quelque chose, mais quoi ?
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
bruno reiter [MVP]
Si tu teste avec QA il s'agit de paramètre de session qui écrasent les paramètres de base voir toolsoptions
br
"HervéR" wrote in message news:#
Bonjour tout le monde,
Je suis en train d'étudier le passage d'une bdd actuellement au niveau de compatibilité 65 au niveau 80. Ce qui m'embête le plus, c'est le fait qu'en 80, l'option CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. Ce qui fait que la requête select null + 'coucou' renvoie NULL J'ai essayé de modifier ce paramètre pour la base de données, mais ce la
ne
fonctionne pas :( Voici comment j'ai procédé : Use Master Go Alter Database MaBase Set CONCAT_NULL_YIELDS_NULL OFF Go
Un Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') me renvoie pourtant bien 0 mais un Use MaBase select null + 'coucou' renvoie hélàs toujours NULL
J'ai dû louper quelque chose, mais quoi ?
Si tu teste avec QA il s'agit de paramètre de session qui écrasent les
paramètres de base voir toolsoptions
br
"HervéR" <hreignoux@sidexa.com> wrote in message
news:#RVioYYPEHA.3708@TK2MSFTNGP10.phx.gbl...
Bonjour tout le monde,
Je suis en train d'étudier le passage d'une bdd actuellement au niveau de
compatibilité 65 au niveau 80.
Ce qui m'embête le plus, c'est le fait qu'en 80, l'option
CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON.
Ce qui fait que la requête
select null + 'coucou'
renvoie
NULL
J'ai essayé de modifier ce paramètre pour la base de données, mais ce la
ne
fonctionne pas :(
Voici comment j'ai procédé :
Use Master
Go
Alter Database MaBase
Set CONCAT_NULL_YIELDS_NULL OFF
Go
Un
Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat')
me renvoie pourtant bien 0
mais un
Use MaBase
select null + 'coucou'
renvoie hélàs toujours
NULL
Si tu teste avec QA il s'agit de paramètre de session qui écrasent les paramètres de base voir toolsoptions
br
"HervéR" wrote in message news:#
Bonjour tout le monde,
Je suis en train d'étudier le passage d'une bdd actuellement au niveau de compatibilité 65 au niveau 80. Ce qui m'embête le plus, c'est le fait qu'en 80, l'option CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. Ce qui fait que la requête select null + 'coucou' renvoie NULL J'ai essayé de modifier ce paramètre pour la base de données, mais ce la
ne
fonctionne pas :( Voici comment j'ai procédé : Use Master Go Alter Database MaBase Set CONCAT_NULL_YIELDS_NULL OFF Go
Un Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') me renvoie pourtant bien 0 mais un Use MaBase select null + 'coucou' renvoie hélàs toujours NULL
J'ai dû louper quelque chose, mais quoi ?
HervéR
Je pensais faire çà un jour, mais vous (toi et Bruno Reiter) pensez donc qu'il vaut mieux que je le fasse tout de suite ! C'est quand même un sacré boulot :( Considérons une table de contacts comporant les classiques Titre, Prenom et Nom. La vue qui sous sous SQL 6.5 s'écrivait : Titre + ' ' + Prenom + ' ' + Nom va devenir (en prenant le cas où toutes les valeurs sont nulles et que l'on souhaite que la valeur de la vue indique alors Null) (Case When Coalesce(Titre, Prenom, Nom) is null then Null else (Case When (Titre is null or Titre = '') then '' else Titre + ' ' end) + (Case When (Prenom is null or Prenom = '') then '' else Prenom + ' ' end) + (Case When (Nom is null or Nom = '') then '' else Nom end) end)
C'EST PAS RIEN !!! A moins que vous ne voyiez moins lourd !
"Fred BROUARD" a écrit dans le message de news:
La norme SQL prévoit que le NULL est "absorbant". Autement dit toute
opération avec présence d'une colonne NULL doit
conduire à un résultat NULL...
Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2
machines en utilisant notamment la fonction
coalesce.
A +
HervéR a écrit: > Bonjour tout le monde, > > Je suis en train d'étudier le passage d'une bdd actuellement au niveau
de
> compatibilité 65 au niveau 80. > Ce qui m'embête le plus, c'est le fait qu'en 80, l'option > CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. > Ce qui fait que la requête > select null + 'coucou' > renvoie > NULL > J'ai essayé de modifier ce paramètre pour la base de données, mais ce la
ne
> fonctionne pas :( > Voici comment j'ai procédé : > Use Master > Go > Alter Database MaBase > Set CONCAT_NULL_YIELDS_NULL OFF > Go > > Un > Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') > me renvoie pourtant bien 0 > mais un > Use MaBase > select null + 'coucou' > renvoie hélàs toujours > NULL > > J'ai dû louper quelque chose, mais quoi ? > >
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Je pensais faire çà un jour, mais vous (toi et Bruno Reiter) pensez donc
qu'il vaut mieux que je le fasse tout de suite !
C'est quand même un sacré boulot :(
Considérons une table de contacts comporant les classiques Titre, Prenom et
Nom.
La vue qui sous sous SQL 6.5 s'écrivait :
Titre + ' ' + Prenom + ' ' + Nom
va devenir (en prenant le cas où toutes les valeurs sont nulles et que l'on
souhaite que la valeur de la vue indique alors Null)
(Case When Coalesce(Titre, Prenom, Nom) is null then Null
else (Case When (Titre is null or Titre = '') then ''
else Titre + ' '
end) +
(Case When (Prenom is null or Prenom = '') then ''
else Prenom + ' '
end) +
(Case When (Nom is null or Nom = '') then ''
else Nom
end)
end)
C'EST PAS RIEN !!!
A moins que vous ne voyiez moins lourd !
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:40AB87ED.3020401@club-internet.fr...
La norme SQL prévoit que le NULL est "absorbant". Autement dit toute
opération avec présence d'une colonne NULL doit
conduire à un résultat NULL...
Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2
machines en utilisant notamment la fonction
coalesce.
A +
HervéR a écrit:
> Bonjour tout le monde,
>
> Je suis en train d'étudier le passage d'une bdd actuellement au niveau
de
> compatibilité 65 au niveau 80.
> Ce qui m'embête le plus, c'est le fait qu'en 80, l'option
> CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON.
> Ce qui fait que la requête
> select null + 'coucou'
> renvoie
> NULL
> J'ai essayé de modifier ce paramètre pour la base de données, mais ce la
ne
> fonctionne pas :(
> Voici comment j'ai procédé :
> Use Master
> Go
> Alter Database MaBase
> Set CONCAT_NULL_YIELDS_NULL OFF
> Go
>
> Un
> Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat')
> me renvoie pourtant bien 0
> mais un
> Use MaBase
> select null + 'coucou'
> renvoie hélàs toujours
> NULL
>
> J'ai dû louper quelque chose, mais quoi ?
>
>
--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Je pensais faire çà un jour, mais vous (toi et Bruno Reiter) pensez donc qu'il vaut mieux que je le fasse tout de suite ! C'est quand même un sacré boulot :( Considérons une table de contacts comporant les classiques Titre, Prenom et Nom. La vue qui sous sous SQL 6.5 s'écrivait : Titre + ' ' + Prenom + ' ' + Nom va devenir (en prenant le cas où toutes les valeurs sont nulles et que l'on souhaite que la valeur de la vue indique alors Null) (Case When Coalesce(Titre, Prenom, Nom) is null then Null else (Case When (Titre is null or Titre = '') then '' else Titre + ' ' end) + (Case When (Prenom is null or Prenom = '') then '' else Prenom + ' ' end) + (Case When (Nom is null or Nom = '') then '' else Nom end) end)
C'EST PAS RIEN !!! A moins que vous ne voyiez moins lourd !
"Fred BROUARD" a écrit dans le message de news:
La norme SQL prévoit que le NULL est "absorbant". Autement dit toute
opération avec présence d'une colonne NULL doit
conduire à un résultat NULL...
Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2
machines en utilisant notamment la fonction
coalesce.
A +
HervéR a écrit: > Bonjour tout le monde, > > Je suis en train d'étudier le passage d'une bdd actuellement au niveau
de
> compatibilité 65 au niveau 80. > Ce qui m'embête le plus, c'est le fait qu'en 80, l'option > CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. > Ce qui fait que la requête > select null + 'coucou' > renvoie > NULL > J'ai essayé de modifier ce paramètre pour la base de données, mais ce la
ne
> fonctionne pas :( > Voici comment j'ai procédé : > Use Master > Go > Alter Database MaBase > Set CONCAT_NULL_YIELDS_NULL OFF > Go > > Un > Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') > me renvoie pourtant bien 0 > mais un > Use MaBase > select null + 'coucou' > renvoie hélàs toujours > NULL > > J'ai dû louper quelque chose, mais quoi ? > >
-- Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Je pensais faire çà un jour, mais vous (toi et Bruno Reiter) pensez donc qu'il vaut mieux que je le fasse tout de suite ! C'est quand même un sacré boulot :( Considérons une table de contacts comporant les classiques Titre, Prenom
et
Nom. La vue qui sous sous SQL 6.5 s'écrivait : Titre + ' ' + Prenom + ' ' + Nom va devenir (en prenant le cas où toutes les valeurs sont nulles et que
l'on
souhaite que la valeur de la vue indique alors Null) (Case When Coalesce(Titre, Prenom, Nom) is null then Null else (Case When (Titre is null or Titre = '') then '' else Titre + ' ' end) + (Case When (Prenom is null or Prenom = '') then '' else Prenom + ' ' end) + (Case When (Nom is null or Nom = '') then '' else Nom end) end)
C'EST PAS RIEN !!! A moins que vous ne voyiez moins lourd !
"Fred BROUARD" a écrit dans le message de news: > La norme SQL prévoit que le NULL est "absorbant". Autement dit toute opération avec présence d'une colonne NULL doit > conduire à un résultat NULL... > > Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2 machines en utilisant notamment la fonction > coalesce. > > A + > > HervéR a écrit: > > Bonjour tout le monde, > > > > Je suis en train d'étudier le passage d'une bdd actuellement au niveau de > > compatibilité 65 au niveau 80. > > Ce qui m'embête le plus, c'est le fait qu'en 80, l'option > > CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. > > Ce qui fait que la requête > > select null + 'coucou' > > renvoie > > NULL > > J'ai essayé de modifier ce paramètre pour la base de données, mais ce
la
ne > > fonctionne pas :( > > Voici comment j'ai procédé : > > Use Master > > Go > > Alter Database MaBase > > Set CONCAT_NULL_YIELDS_NULL OFF > > Go > > > > Un > > Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') > > me renvoie pourtant bien 0 > > mais un > > Use MaBase > > select null + 'coucou' > > renvoie hélàs toujours > > NULL > > > > J'ai dû louper quelque chose, mais quoi ? > > > > > > -- > Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web > Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html > Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com > ************************ www.datasapiens.com ************************* >
"HervéR" <hreignoux@sidexa.com> wrote in message
news:um6VTrzPEHA.3476@tk2msftngp13.phx.gbl...
Je pensais faire çà un jour, mais vous (toi et Bruno Reiter) pensez donc
qu'il vaut mieux que je le fasse tout de suite !
C'est quand même un sacré boulot :(
Considérons une table de contacts comporant les classiques Titre, Prenom
et
Nom.
La vue qui sous sous SQL 6.5 s'écrivait :
Titre + ' ' + Prenom + ' ' + Nom
va devenir (en prenant le cas où toutes les valeurs sont nulles et que
l'on
souhaite que la valeur de la vue indique alors Null)
(Case When Coalesce(Titre, Prenom, Nom) is null then Null
else (Case When (Titre is null or Titre = '') then ''
else Titre + ' '
end) +
(Case When (Prenom is null or Prenom = '') then ''
else Prenom + ' '
end) +
(Case When (Nom is null or Nom = '') then ''
else Nom
end)
end)
C'EST PAS RIEN !!!
A moins que vous ne voyiez moins lourd !
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:40AB87ED.3020401@club-internet.fr...
> La norme SQL prévoit que le NULL est "absorbant". Autement dit toute
opération avec présence d'une colonne NULL doit
> conduire à un résultat NULL...
>
> Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2
machines en utilisant notamment la fonction
> coalesce.
>
> A +
>
> HervéR a écrit:
> > Bonjour tout le monde,
> >
> > Je suis en train d'étudier le passage d'une bdd actuellement au niveau
de
> > compatibilité 65 au niveau 80.
> > Ce qui m'embête le plus, c'est le fait qu'en 80, l'option
> > CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON.
> > Ce qui fait que la requête
> > select null + 'coucou'
> > renvoie
> > NULL
> > J'ai essayé de modifier ce paramètre pour la base de données, mais ce
la
ne
> > fonctionne pas :(
> > Voici comment j'ai procédé :
> > Use Master
> > Go
> > Alter Database MaBase
> > Set CONCAT_NULL_YIELDS_NULL OFF
> > Go
> >
> > Un
> > Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat')
> > me renvoie pourtant bien 0
> > mais un
> > Use MaBase
> > select null + 'coucou'
> > renvoie hélàs toujours
> > NULL
> >
> > J'ai dû louper quelque chose, mais quoi ?
> >
> >
>
> --
> Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
> Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> ************************ www.datasapiens.com *************************
>
Je pensais faire çà un jour, mais vous (toi et Bruno Reiter) pensez donc qu'il vaut mieux que je le fasse tout de suite ! C'est quand même un sacré boulot :( Considérons une table de contacts comporant les classiques Titre, Prenom
et
Nom. La vue qui sous sous SQL 6.5 s'écrivait : Titre + ' ' + Prenom + ' ' + Nom va devenir (en prenant le cas où toutes les valeurs sont nulles et que
l'on
souhaite que la valeur de la vue indique alors Null) (Case When Coalesce(Titre, Prenom, Nom) is null then Null else (Case When (Titre is null or Titre = '') then '' else Titre + ' ' end) + (Case When (Prenom is null or Prenom = '') then '' else Prenom + ' ' end) + (Case When (Nom is null or Nom = '') then '' else Nom end) end)
C'EST PAS RIEN !!! A moins que vous ne voyiez moins lourd !
"Fred BROUARD" a écrit dans le message de news: > La norme SQL prévoit que le NULL est "absorbant". Autement dit toute opération avec présence d'une colonne NULL doit > conduire à un résultat NULL... > > Le mieux est de modifier tes requêtes pour qu'elles fonctionne sur les 2 machines en utilisant notamment la fonction > coalesce. > > A + > > HervéR a écrit: > > Bonjour tout le monde, > > > > Je suis en train d'étudier le passage d'une bdd actuellement au niveau de > > compatibilité 65 au niveau 80. > > Ce qui m'embête le plus, c'est le fait qu'en 80, l'option > > CONCAT_NULL_YIELDS_NULL soit par défaut positionnée sur ON. > > Ce qui fait que la requête > > select null + 'coucou' > > renvoie > > NULL > > J'ai essayé de modifier ce paramètre pour la base de données, mais ce
la
ne > > fonctionne pas :( > > Voici comment j'ai procédé : > > Use Master > > Go > > Alter Database MaBase > > Set CONCAT_NULL_YIELDS_NULL OFF > > Go > > > > Un > > Select DATABASEPROPERTYEX ('MaBase', 'IsNullConcat') > > me renvoie pourtant bien 0 > > mais un > > Use MaBase > > select null + 'coucou' > > renvoie hélàs toujours > > NULL > > > > J'ai dû louper quelque chose, mais quoi ? > > > > > > -- > Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web > Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html > Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com > ************************ www.datasapiens.com ************************* >