IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

caractère d'échappement de '['


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut caractère d'échappement de '['
    Bonjour !

    Nous avons un petit problème dans une requete SQl au sein d'un programme Vb.net ...

    Dans un dataset nous avons un champ VARCHAR composé entre autre de formule entre crochet . par exemple :

    [Ax]+[AH] * [REM]
    Nous essayons de faire un select pour rechercher une formule !

    Notre problème est que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM         FONCTION
    WHERE     (Formule LIKE '%[REM]%')
    ne fonctionne pas car sql interprete les crochets comme pour une expression régulière.

    Nous avons essayé le '\' avant les crochets ou meme de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT     * FROM         FONCTION WHERE     (Formule LIKE '%[REM]%' ESCAPE '[')
    Rien ne fonctionne !

    Et impossible de trouver sur Google un embryon de solution => pas de caractère d'échappement pour le '[' !

    Merci de votre aide !

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut Re: caractère d'échappement de '['
    Citation Envoyé par Ecibat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM FONCTION WHERE  (Formule LIKE '%[REM]%' ESCAPE '[')
    Ne connaissant pas ton SGBDR, je ne connais pas sa capacité à supporter la clause ESCAPE, mais en tout état de cause, il faut justement ne pas mettre ESCAPE '[', mais autre chose, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM FONCTION WHERE Formule LIKE '%/[REM/]%' ESCAPE '/'

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    il s'agit de sqlserver ... et la requete que tu me donnes ne fonctionne pas ...
    (elle ne me retroune aucun enregsitrement)

    en fait ESCAPE spécifie le caractère d'échappement ?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par Ecibat
    en fait ESCAPE spécifie le caractère d'échappement ?
    Je ne connais pas SALServer, donc je ne sais pas si cette syntaxe est supportée, mais c'est bien ainsi que cela fonctionne sous ORACLE

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Personne n'a d'autres idées ?

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    SQL Serveur 2000 suporte bien la notion de SCAPE sauf que dans votre cas, vous avez deux caractères [ et ] vous pouvez bien les remplacer par un ".
    Pourquoi les avez vous utilisés ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Nous avons utilisé les crochets car nous affichons des formules composées de champs ... exemples de champs:

    AD ARA BER MUR

    et au lieu d'avoir

    (ARA + MUR - 18 ) * AD
    ' pas lisible

    ou au lieu d'avoir

    ((ARA) + (MUR) -18 ) * (AD)
    'pas super non plus

    on avait choisi :

    ([ARA] + [MUR] -18 ) * [AD]
    'marche pas

    Du coup : on va prendre les accolades :


    ({ARA} + {MUR} -18 ) * {AD}
    ' moins joli mais a le mérite de fonctionner !


    Merci quand même

  8. #8
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    La prochaine fois, penser au tag [Résolu]

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Le tag résolu n'aurait pas été plus préférable si on m'avait proposé un caractère d'échappement ?

    Parce que là j'appelle plus ça un contournement plutôt qu'une résolution ...

    NON ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 74
    Par défaut
    hello,
    est que tu as essayé en faisant un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM FONCTION WHERE  Formule LIKE '%/[REM/]%' ESCAPE '/'
    il me semble bien qu'escape definit justement le caractère d'échappement de ta requete comme ca tu peux personnaliser à ton gout..

    voilà dis moi nous si c'est mieux..
    a+

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 74
    Par défaut
    oups j'avais vu le post de Médiat : ))))
    il a raison .. SQL Server le mange bien comme il faut.

    chez moi ca fonctionne carrément bien :)

  12. #12
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Citation Envoyé par Ecibat
    Nous avons utilisé les crochets car nous affichons des formules composées de champs ... exemples de champs:

    AD ARA BER MUR

    et au lieu d'avoir

    (ARA + MUR - 18 ) * AD
    ' pas lisible

    ou au lieu d'avoir

    ((ARA) + (MUR) -18 ) * (AD)
    'pas super non plus

    on avait choisi :

    ([ARA] + [MUR] -18 ) * [AD]
    'marche pas

    Du coup : on va prendre les accolades :


    ({ARA} + {MUR} -18 ) * {AD}
    ' moins joli mais a le mérite de fonctionner !


    Merci quand même
    Vous avez eu ce problème parce que vous avez voulu le créer !
    Quel est l'interêt des crochets ou des parenthèses pour une expression comme celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((ARA) + (MUR) -18 ) * (AD)
    J'aurai fait simplement comme ceci:
    Et pas de problème avec les ESCAPE !!!!!
    La plupart des problèmes de syntaxes sont dû au mauvais choix des caractères utilisés pour nommer nos variables.
    Eviter les fontaisies qui peuvent être couteuses en temps de réponses de nos applications et en déboguage en cas d'érreur !

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Que je sache on est quand même libre de d'avoir '[' et ']' dans la même chaine de caractères ! non ?

    c'est un peu facile quand on ne trouve pas de solution de dire que c'est un mauvais choix !

    vous ne connaissez en rien les impératifs de mon projet, et je vous assure que les crochets ne sont en rien une fantaisie !

    Maintenant si quelqu'un a une VRAIE SOLUTION à ce problème qu'il la post ici !


    Etant moi même ancien modérateur du forum ACCESS sur developpez, je n'avais pas pour habitude de coutourner les problèmes.

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 74
    Par défaut
    Hello,

    le métier commande toujours .. pour le plus grand "bonheur" des programmeurs.. au final de nos codes il y a toujours un utilisateur habitué à des règles propres , qui a ses petites manies, et on ne change pas de pantoufles entre les repas c'est bien connu ;))

    Juste parce que ca m'interesse vu que je vais avoir des '%' qui trainent dans la base de l'appli sur la quelle je bosse en ce moment et effectivement je les traite bien avec ESCAPE qui définit le caractère d'échapement qu'on a envie ..

    est ce que les requetes avec ESCAPE ca marche chez toi Ecibat ? as tu un exemple un peu trappu ? voire un cas tordu ?

    est ce que le dataset il ne couine pas quand il récupère les données (normalement y'a pas de raisons..) ?

    2 urls sur le sujet : http://msdn.microsoft.com/library/de..._character.asp

    http://msdn.microsoft.com/library/de...la-lz_115x.asp

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Merci beaucoup !


    grâce à ton second lien http://msdn.microsoft.com/library/de...la-lz_115x.asp on a pu lire ceci :

    LIKE '[ [ ]' => [
    LIKE ']' => ]
    Grâce à cette information, on a pu modifier notre requete et vous annoncer que la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM         FONCTION
    WHERE     (Formule LIKE '%[[]REM]%')
    nous renvoie bien toutes les formules où on trouve [REM]

    fonctionne parfaitement !


    Merci bran_noz

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Retirer les caractères d'échappement
    Par vandeyy dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2007, 11h54
  2. caractère d'échappement pour un '
    Par alexfrere dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 04/07/2006, 11h07
  3. Caractères d'échappement
    Par dl_jarod dans le forum ASP
    Réponses: 2
    Dernier message: 26/10/2005, 10h36
  4. caractéres d'échappements
    Par kleenex dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo