Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1307 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête SQL avec like et le caractère '

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête SQL avec like et le caractère '

n°862329
VirginieGE
Posté le 01-10-2004 à 17:01:11  profilanswer
 

Bonjour à tous !
 
J'ai un problème avec une requête SQL qui utilise un like et un caractère (') :
 
... like 'apparition'
 
Le problème est qu'avant apparition il peut y avoir plusieurs caractères et après aussi, dont le caractère ' et dès qu'il le rencontre, il s'arrête...
 
Est-ce que qqn serait-susceptible de m'aider ????
 
Merci d'avance !!!!!

mood
Publicité
Posté le 01-10-2004 à 17:01:11  profilanswer
 

n°862331
skeye
Posté le 01-10-2004 à 17:03:11  profilanswer
 

Je suis pas sûr d'avoir compris...ce que tu veux, ce sont les champs contenant

Citation :


apparition


 
ou
 

Citation :


'apparition'


 
:??:


Message édité par skeye le 01-10-2004 à 17:03:29

---------------
Can't buy what I want because it's free -
n°862381
sircam
I Like Trains
Posté le 01-10-2004 à 17:40:02  profilanswer
 

Reformule stp, c'est pas très clair.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°864366
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-10-2004 à 16:40:30  profilanswer
 

ta question n'est pas claire, mais à priori, t'as un problème d'échappement des ' lors de l'écriture de ta requête.
 
Pour chercher "j'ai faim" dans une champ, quelquesoit les caractères avant et après, c'est :
 
SELECT *
FROM MATABLE
WHERE MONCHAMP LIKE '%j''ai faim%'
 
Et si tu cherches "100%" alors c'est :
 
SELECT *
FROM MATABLE
WHERE MONCHAMP LIKE '%100%%%'
 
=> En SQL, on double le caractère spécial pour l'échapper. Certains SGBD supportent aussi l'échappement ISO, à savoir : \x

n°864378
sircam
I Like Trains
Posté le 04-10-2004 à 16:52:36  profilanswer
 

Dans la série "répondons à une question alors que son auteur est parti et ne donne plus signe de vie", nous voilà :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°864394
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-10-2004 à 17:10:06  profilanswer
 

Rectificatif : Dans la série j'étais 15 jours en vacances et j'ai pas dormis de la nuit et donc j'ai la tête dans le c*l et j'arrive pas à regarder les dates des posts parceque c'est trop petit, c'est moi que voilà :p

n°864422
sircam
I Like Trains
Posté le 04-10-2004 à 17:46:36  profilanswer
 

Ou qq chose comme ça ;)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°864425
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-10-2004 à 17:47:48  profilanswer
 

sircam a écrit :

Dans la série "répondons à une question alors que son auteur est parti et ne donne plus signe de vie", nous voilà :o


 
ouais enfin 4 jours c'est pas encore vraiment un vieux topic... Surtout à cheval sur un week-end ; certains ne peuvent se connecter qu'occasionnellement depuis leur école/boulot.


Message édité par antp le 04-10-2004 à 17:48:25

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°864493
gizmo
Posté le 04-10-2004 à 19:00:49  profilanswer
 

Arjuna a écrit :

Rectificatif : Dans la série j'étais 15 jours en vacances et j'ai pas dormis de la nuit et donc j'ai la tête dans le c*l et j'arrive pas à regarder les dates des posts parceque c'est trop petit, c'est moi que voilà :p


Avoue que c'est pas la date qui t'intéressait mais le pseudo :o

n°864882
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-10-2004 à 10:43:54  profilanswer
 

Arf ! J'avais pas vu :lol:
 
Une Virginie (j'aime bien ce nom en plus :))
 
Et "GE" :ouch: General Electric ??? C'est ma voisine alors ??? T'es où t'es où t'es où, que je vienne t'expliquer ça de plus près :ange:

mood
Publicité
Posté le 05-10-2004 à 10:43:54  profilanswer
 

n°864891
sircam
I Like Trains
Posté le 05-10-2004 à 10:50:18  profilanswer
 

Bandes de petits exités ! Un peu de retenue ! Dès qu'une nana se pointe sur un forum geek, c'est la débandade.  :o
 
Hmmm, je sens qu'il y a un jeu de mot scabreux à faire la-dessus...
[:aline2003]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°864962
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-10-2004 à 11:18:10  profilanswer
 

Moi j'avais rien vu, j'avais juste répondu à la question, c'est la faute à Gizmo.
 
PS: Gizmo, fait gaffe, dans ma promo y'avait une fille qu'on appelait Gizmo, alors sauve-toi avant que je te saute dessus aussi :D

n°864980
sircam
I Like Trains
Posté le 05-10-2004 à 11:31:15  profilanswer
 

Arjuna a écrit :

Moi j'avais rien vu, j'avais juste répondu à la question, c'est la faute à Gizmo.


J'te crois pas :p


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°865066
Arjuna
Aircraft Ident.: F-MBSD
Posté le 05-10-2004 à 12:15:56  profilanswer
 

sisi cai vrai (pis en plus gt pas là au début alors...)

n°874141
VirginieGE
Posté le 15-10-2004 à 15:37:33  profilanswer
 

:)  :heink:  :sleep
Vraiment désolée, mais j'avais oublié la notification par email...
... et pour mon pseudo, tout s'explique, comme Virginie était déjà pris... j'ai du opter pour VirginieGE, désolée.... en tout cas, vous m'avez bien fait marrer....
Mais revenons à nous moutons....
C'est vrai que j'ai peut-être mal expliquer mon truc alors voilà un bout de code :

Code :
  1. strSQL = "WHERE (COURS.COUBUT LIKE *'*" & Request("MC" ) & "*'*) "


bon, j'ai tenté pas mal de chose, sans succès... et le pb, est que dans MC, je peux très bien avoir qqch du style l'évênement et c'est la M avec le caractère '
Voilà, j'espère vous avoir mieux expliquer mon blème, en tout cas, merci millle fois pour votre aide   :)

n°874331
Arjuna
Aircraft Ident.: F-MBSD
Posté le 15-10-2004 à 18:07:41  profilanswer
 

Déjà, ta ligne contient des erreurs :
1) Request et un objet générique qu'il ne faut pas utiliser. En effet, là tu vas indiférement dans les Cookies, les variables passées en POST (formulaire) ou en GET (url). Utilise Request.Cookies, Request.Form ou Request.QueryString selon ce que tu veux faire. C'est un trou de sécurité énorme sinon, sans parler des perfs qui sont très dégradées.
2) Le LIKE porte sur une chaîne de caractère, contenant un pattern. Là, il y a des bouts de pattern (les *) en dehors de la chaîne. Donc ça ne peut que merder, même si ta variable "MC" ne contient pas de " ' ".
3) N'utilise pas * (syntaxe spécifique aux produits M$, héritée des patterns de MS-DOS, mais le %, qui est le carractère standard SQL. Il n'y a aucune différence dans le fonctionnement si ce n'est que ton programme sera capable de tourner sur n'importe quel SGBD, et pas seulement Access ou MS SQL Server.
 
Donc la requête écrite proprement (sans corriger le problème initial) :
 

Code :
  1. strSQL = "WHERE (COURS.COUBUT LIKE '%" & Request.Form("MC" ) & "%') "


 
(en imaginant que la variable MC provient d'un formulaire avec method "POST" )
 
Pour en revenir au quotes. Relis mon premier message : Pour "échapper" une quote, il faut la doubler.
Donc il faut remplacer les ' par deux ' ('' et non le caractère " ) dans la variable.
 
Tu peux donc faire ceci :
 

Code :
  1. Replace(Request.Form("MC" ), "'", "''" )


 
Deplus, si une personne tapes un % dans la variable, alors au lieu de chercher ce caractère, le SGBD va rechercher n'importe quelle série de caractrère à la place. Il faut donc l'échapper de la même façon :
 

Code :
  1. Replace(Replace(Request.Form("MC" ), "'", "''" ), "%", "%%" )


 
Au final, ça donne ça :
 

Code :
  1. strSQL = "WHERE (COURS.COUBUT LIKE *'*" & Replace(Replace(Request.Form("MC" ), "'", "''" ), "%", "%%" ) & "*'*) "


 
N'oublie pas de modifier Request.Form avec Request.QueryString ou Request.Cookies selon l'endroit où se situe cette variable.

n°879086
VirginieGE
Posté le 21-10-2004 à 16:06:01  profilanswer
 

Salut à tous....
 
Pour info, j'ai trouvé cette solution qui marche super :
 

Code :
  1. StrSQL="...... WHERE .... LIKE '*" & Replace(MaVariable,"'","''" ) & "*' "


 
Merci à tous de votre aide !  :)  :)

n°879101
Arjuna
Aircraft Ident.: F-MBSD
Posté le 21-10-2004 à 16:13:10  profilanswer
 

C'est un peu ce que je t'ai dit depuis ma première intervention dans ce topic :sarcastic:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête SQL avec like et le caractère '

 

Sujets relatifs
[PHP/SQL] pb requete inter tables[SQL] Requete de copie
[ASP.NET] Problème sauvegarde apostrophe dans SQL server[RESOLU] problème de condition sur un requête SQL
ASP.NET, SQL et multiuser[VBS] Afficher requete avec DATASET
pb SQL : Jointure externe (plusieurs) 
Plus de sujets relatifs à : Requête SQL avec like et le caractère '


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR