Requête SQL avec like et le caractère ' - SQL/NoSQL - Programmation
Marsh Posté le 01-10-2004 à 17:03:11
Je suis pas sûr d'avoir compris...ce que tu veux, ce sont les champs contenant
Citation : |
ou
Citation : |
Marsh Posté le 01-10-2004 à 17:40:02
Reformule stp, c'est pas très clair.
Marsh Posté le 04-10-2004 à 16:40:30
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
Marsh Posté le 04-10-2004 à 16:52:36
Dans la série "répondons à une question alors que son auteur est parti et ne donne plus signe de vie", nous voilà
Marsh Posté le 04-10-2004 à 17:10:06
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à
Marsh Posté le 04-10-2004 à 17:46:36
Ou qq chose comme ça
Marsh Posté le 04-10-2004 à 17:47:48
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à |
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.
Marsh Posté le 04-10-2004 à 19:00:49
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à |
Avoue que c'est pas la date qui t'intéressait mais le pseudo
Marsh Posté le 05-10-2004 à 10:43:54
Arf ! J'avais pas vu
Une Virginie (j'aime bien ce nom en plus )
Et "GE" 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
Marsh Posté le 05-10-2004 à 10:50:18
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.
Hmmm, je sens qu'il y a un jeu de mot scabreux à faire la-dessus...
Marsh Posté le 05-10-2004 à 11:18:10
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
Marsh Posté le 05-10-2004 à 11:31:15
Arjuna a écrit : Moi j'avais rien vu, j'avais juste répondu à la question, c'est la faute à Gizmo. |
J'te crois pas
Marsh Posté le 15-10-2004 à 15:37:33
: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 :
|
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
Marsh Posté le 15-10-2004 à 18:07:41
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 :
|
(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 :
|
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 :
|
Au final, ça donne ça :
Code :
|
N'oublie pas de modifier Request.Form avec Request.QueryString ou Request.Cookies selon l'endroit où se situe cette variable.
Marsh Posté le 21-10-2004 à 16:06:01
Salut à tous....
Pour info, j'ai trouvé cette solution qui marche super :
Code :
|
Merci à tous de votre aide !
Marsh Posté le 21-10-2004 à 16:13:10
C'est un peu ce que je t'ai dit depuis ma première intervention dans ce topic
Marsh Posté le 01-10-2004 à 17:01:11
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 !!!!!