SQL Server 2000
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Bonjour =E0 tous,
J'esp=E8re que ma question sera suffisament claire afin que vous=20
m'apportiez vos =E9claircissements.
Voici de quoi il s'agit, lors d'une requ=EAte de s=E9lection concue de=20
mani=E8re triviale.
Exemple :=20
SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne=20
jusqu'au moment ou la recherche s'effectue sur un mot comportant un=20
underscore=3D>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet=20
j'ai remarqu=E9 que cela me ramenait tout les enregistrements et non pas=20
seulement ceux avec B_.=20
Apr=E8s plusieurs recherches, j'ai enfin compris que le "_" =E9tait=20
consid=E9r=E9 comme un symbole au sein de SQL-Server 2000, et d'apr=E8s ce =
que=20
j'ai pu lire il faut utiliser la syntaxe suivante afin de le consid=E9rer=
=20
comme =E9tant un crit=E8re =E0 part enti=E8re.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, =E0 partir de l=E0 il suffirait de parcourir le param=E8tre =E0 la=20
recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal =E0=20
visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de=20
l'application cliente.
Ensuite comment syntaxiquement sql g=E8re les conditions : IF=20
@Condition=3Dfonction(@strSearch)=3D'_' THEN concat=E8ne '#_%' ESCAPE '#''=
=20
avec le d=E9but de la requ=EAte.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me=20
donner une piste. Ou bien un moyen de contourner ce probl=E8me de mot=20
r=E9serv=E9 '_'
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
Vuillermet Jacques
Utilise la fonction REPLACE pour remplacer les _ par des [_]. (pas testé)
Voir dans la doc la page pour LIKE.
Jacques.
"Loïc" a écrit dans le message de news:
SQL Server 2000 =============== Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
Utilise la fonction REPLACE pour remplacer les _ par des [_].
(pas testé)
Voir dans la doc la page pour LIKE.
Jacques.
"Loïc" <jask@bluew1n.ch> a écrit dans le message de news:
MPG.1b94110176ee4da989681@news.bluewin.ch...
SQL Server 2000
===============
Bonjour à tous,
J'espère que ma question sera suffisament claire afin que vous
m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de
manière triviale.
Exemple :
SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne
jusqu'au moment ou la recherche s'effectue sur un mot comportant un
underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet
j'ai remarqué que cela me ramenait tout les enregistrements et non pas
seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était
considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que
j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer
comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la
recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à
visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de
l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF
@Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#''
avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me
donner une piste. Ou bien un moyen de contourner ce problème de mot
réservé '_'
Utilise la fonction REPLACE pour remplacer les _ par des [_]. (pas testé)
Voir dans la doc la page pour LIKE.
Jacques.
"Loïc" a écrit dans le message de news:
SQL Server 2000 =============== Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
Steve Kass
L'équivalent de WHERE Code_Test LIKE '%B[_]%' est WHERE CHARINDEX('B_',Code_Test) > 0, si Code_Test est de type char/nchar/varchar/nvarchar. Si Code_Test est de type text ou ntext, il faut utiliser LIKE ou PATINDEX avec '%B[_]%'.
Steve Kass Drew University
"Loïc" wrote in message news: SQL Server 2000 =============== Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
L'équivalent de WHERE Code_Test LIKE '%B[_]%' est WHERE
CHARINDEX('B_',Code_Test) > 0, si Code_Test est de type
char/nchar/varchar/nvarchar. Si Code_Test est de type text ou ntext, il
faut utiliser LIKE ou PATINDEX avec '%B[_]%'.
Steve Kass
Drew University
"Loïc" <jask@bluew1n.ch> wrote in message
news:MPG.1b94110176ee4da989681@news.bluewin.ch...
SQL Server 2000
===============
Bonjour à tous,
J'espère que ma question sera suffisament claire afin que vous
m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de
manière triviale.
Exemple :
SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne
jusqu'au moment ou la recherche s'effectue sur un mot comportant un
underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet
j'ai remarqué que cela me ramenait tout les enregistrements et non pas
seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était
considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que
j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer
comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la
recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à
visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de
l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF
@Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#''
avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me
donner une piste. Ou bien un moyen de contourner ce problème de mot
réservé '_'
L'équivalent de WHERE Code_Test LIKE '%B[_]%' est WHERE CHARINDEX('B_',Code_Test) > 0, si Code_Test est de type char/nchar/varchar/nvarchar. Si Code_Test est de type text ou ntext, il faut utiliser LIKE ou PATINDEX avec '%B[_]%'.
Steve Kass Drew University
"Loïc" wrote in message news: SQL Server 2000 =============== Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
Loïc
Bonjour,
Merci pour vos réponses, j'y vois un peu plus clair et il est vrai que la syntaxe '%B[_]%' convient parfaitement à ce que j'ai besoin dans le cas de mon exemple.
Par contre, le problème réside lorsque je passe la valeur code test en paramètre depuis mon interface cliente :
alter procedure dbo.Rq_ListeTest(@codeTest varchar(20))
Select * FROM dbo.Tb_Tests WHERE Test_Code=@CodeTest
Car c'est ce paramètre que je dois tester pour savoir s'il contient un _ et le cas échéant le mettre en [_], je ne connais pas suffisament Sql pour connaitre la manipulation des paramètres chaines.
Dans mon idée, cela ressemblerait à cela (passage par une variable locale) : Declare vTest Set vTest=Replace(@CodeTest,'_','[_]') mais cela ne fonctionne pas.
Pouvez vous me faire connaitre votre façon de procéder dans de tel cas.
Merci infiniment de vos précieux conseils Salutations Loïc
"Steve Kass" a écrit dans le message de news:%
L'équivalent de WHERE Code_Test LIKE '%B[_]%' est WHERE CHARINDEX('B_',Code_Test) > 0, si Code_Test est de type char/nchar/varchar/nvarchar. Si Code_Test est de type text ou ntext, il faut utiliser LIKE ou PATINDEX avec '%B[_]%'.
Steve Kass Drew University
"Loïc" wrote in message news: SQL Server 2000 =============== > Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
Bonjour,
Merci pour vos réponses, j'y vois un peu plus clair et il est vrai que la
syntaxe '%B[_]%' convient parfaitement à ce que j'ai besoin dans le cas de
mon exemple.
Par contre, le problème réside lorsque je passe la valeur code test en
paramètre depuis mon interface cliente :
alter procedure dbo.Rq_ListeTest(@codeTest varchar(20))
Select * FROM dbo.Tb_Tests WHERE Test_Code=@CodeTest
Car c'est ce paramètre que je dois tester pour savoir s'il contient un _ et
le cas échéant le mettre en [_], je ne connais pas suffisament Sql pour
connaitre la manipulation des paramètres chaines.
Dans mon idée, cela ressemblerait à cela (passage par une variable locale) :
Declare vTest
Set vTest=Replace(@CodeTest,'_','[_]')
mais cela ne fonctionne pas.
Pouvez vous me faire connaitre votre façon de procéder dans de tel cas.
Merci infiniment de vos précieux conseils
Salutations
Loïc
"Steve Kass" <skass@drew.edu> a écrit dans le message de
news:%23370uSYiEHA.3608@TK2MSFTNGP09.phx.gbl...
L'équivalent de WHERE Code_Test LIKE '%B[_]%' est WHERE
CHARINDEX('B_',Code_Test) > 0, si Code_Test est de type
char/nchar/varchar/nvarchar. Si Code_Test est de type text ou ntext, il
faut utiliser LIKE ou PATINDEX avec '%B[_]%'.
Steve Kass
Drew University
"Loïc" <jask@bluew1n.ch> wrote in message
news:MPG.1b94110176ee4da989681@news.bluewin.ch...
SQL Server 2000
=============== >
Bonjour à tous,
J'espère que ma question sera suffisament claire afin que vous
m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de
manière triviale.
Exemple :
SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne
jusqu'au moment ou la recherche s'effectue sur un mot comportant un
underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet
j'ai remarqué que cela me ramenait tout les enregistrements et non pas
seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était
considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que
j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer
comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la
recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à
visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de
l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF
@Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#''
avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me
donner une piste. Ou bien un moyen de contourner ce problème de mot
réservé '_'
Merci pour vos réponses, j'y vois un peu plus clair et il est vrai que la syntaxe '%B[_]%' convient parfaitement à ce que j'ai besoin dans le cas de mon exemple.
Par contre, le problème réside lorsque je passe la valeur code test en paramètre depuis mon interface cliente :
alter procedure dbo.Rq_ListeTest(@codeTest varchar(20))
Select * FROM dbo.Tb_Tests WHERE Test_Code=@CodeTest
Car c'est ce paramètre que je dois tester pour savoir s'il contient un _ et le cas échéant le mettre en [_], je ne connais pas suffisament Sql pour connaitre la manipulation des paramètres chaines.
Dans mon idée, cela ressemblerait à cela (passage par une variable locale) : Declare vTest Set vTest=Replace(@CodeTest,'_','[_]') mais cela ne fonctionne pas.
Pouvez vous me faire connaitre votre façon de procéder dans de tel cas.
Merci infiniment de vos précieux conseils Salutations Loïc
"Steve Kass" a écrit dans le message de news:%
L'équivalent de WHERE Code_Test LIKE '%B[_]%' est WHERE CHARINDEX('B_',Code_Test) > 0, si Code_Test est de type char/nchar/varchar/nvarchar. Si Code_Test est de type text ou ntext, il faut utiliser LIKE ou PATINDEX avec '%B[_]%'.
Steve Kass Drew University
"Loïc" wrote in message news: SQL Server 2000 =============== > Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
Fred BROUARD
le mieux est de compléter ton LIKE avec une clause ESCAPE comme ceci :
LIKE '%B?_%' ESCAPE '?'
A lire : http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_like
A +
Loïc a écrit:
SQL Server 2000 =============== > Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************
le mieux est de compléter ton LIKE avec une clause ESCAPE comme ceci :
LIKE '%B?_%' ESCAPE '?'
A lire :
http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_like
A +
Loïc a écrit:
SQL Server 2000
=============== >
Bonjour à tous,
J'espère que ma question sera suffisament claire afin que vous
m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de
manière triviale.
Exemple :
SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne
jusqu'au moment ou la recherche s'effectue sur un mot comportant un
underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet
j'ai remarqué que cela me ramenait tout les enregistrements et non pas
seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était
considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que
j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer
comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la
recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à
visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de
l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF
@Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#''
avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me
donner une piste. Ou bien un moyen de contourner ce problème de mot
réservé '_'
En vous remerciant d'avance
Loïc
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************
le mieux est de compléter ton LIKE avec une clause ESCAPE comme ceci :
LIKE '%B?_%' ESCAPE '?'
A lire : http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_like
A +
Loïc a écrit:
SQL Server 2000 =============== > Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************
Fred BROUARD
le mieux est de compléter ton LIKE avec une clause ESCAPE comme ceci :
LIKE '%B?_%' ESCAPE '?'
A lire : http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_like
A +
Loïc a écrit:
SQL Server 2000 =============== > Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************
le mieux est de compléter ton LIKE avec une clause ESCAPE comme ceci :
LIKE '%B?_%' ESCAPE '?'
A lire :
http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_like
A +
Loïc a écrit:
SQL Server 2000
=============== >
Bonjour à tous,
J'espère que ma question sera suffisament claire afin que vous
m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de
manière triviale.
Exemple :
SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne
jusqu'au moment ou la recherche s'effectue sur un mot comportant un
underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet
j'ai remarqué que cela me ramenait tout les enregistrements et non pas
seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était
considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que
j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer
comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la
recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à
visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de
l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF
@Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#''
avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me
donner une piste. Ou bien un moyen de contourner ce problème de mot
réservé '_'
En vous remerciant d'avance
Loïc
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************
le mieux est de compléter ton LIKE avec une clause ESCAPE comme ceci :
LIKE '%B?_%' ESCAPE '?'
A lire : http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_like
A +
Loïc a écrit:
SQL Server 2000 =============== > Bonjour à tous, J'espère que ma question sera suffisament claire afin que vous m'apportiez vos éclaircissements.
Voici de quoi il s'agit, lors d'une requête de sélection concue de manière triviale.
Exemple : SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B%' cela fonctionne jusqu'au moment ou la recherche s'effectue sur un mot comportant un underscore=>SELECT * FROM Tb_Test WHERE Code_Test LIKE '%B_%' en effet j'ai remarqué que cela me ramenait tout les enregistrements et non pas seulement ceux avec B_.
Après plusieurs recherches, j'ai enfin compris que le "_" était considéré comme un symbole au sein de SQL-Server 2000, et d'après ce que j'ai pu lire il faut utiliser la syntaxe suivante afin de le considérer comme étant un critère à part entière.
SELECT * FROM Tb_Test WHERE Code_Test LIKE 'B%#_%' ESCAPE '#'
Donc, à partir de là il suffirait de parcourir le paramètre à la recherche du fameux _ et de l'encadrer du # ESCAPE. Mais j'ai du mal à visualiser la chose.
Tout d'abord j'aimerais le faire au sein de la base sql et non de l'application cliente.
Ensuite comment syntaxiquement sql gère les conditions : IF @Condition=fonction(@strSearch)='_' THEN concatène '#_%' ESCAPE '#'' avec le début de la requête.
Est ce que c'est faisable au sein de SQL-Server et si oui pouvez vous me donner une piste. Ou bien un moyen de contourner ce problème de mot réservé '_'
En vous remerciant d'avance Loïc
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 *************************