Comment faire pour les requêtes pour Literal caractères spéciaux dans un WHERE clause

Traductions disponibles Traductions disponibles
Numéro d'article: 147687 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article vise à montrer comment configurer la clause WHERE d'une instruction SQL pour rechercher des caractères spéciaux dans un champ de texte d'une table de base de données.

Les caractères spéciaux dans le moteur de base de données Microsoft Jet sont la marque de guillemets simples ('), double guillemet ("") et le canal ou une barre verticale (|). Tous les autres caractères alphanumériques sont traités comme faisant partie de la chaîne littérale.

Plus d'informations

Les guillemets simples et doubles sont utilisées de manière interchangeable par le moteur de base de données Jet en tant que séparateurs pour les chaînes littérales. Par conséquent, une attention particulière doit être prise lorsque vous configurez un WHERE clause pour interroger un champ de texte qui contient des simples ou doubles guillemets incorporés.

Recherchez une valeur de type String qui contient des guillemets simples

Par exemple, si vous avez besoin d'interroger un champ [nom] pour O'Conner, le moteur de base de données Jet doit voir le guillemet simple dans le cadre du littéral, non comme un délimiteur. Vous pouvez accomplir ceci trois façons différentes :
  • Utilisez des guillemets doubles pour délimiter la chaîne littérale.
  • Placez deux guillemets simples à côté de l'autre. Le moteur de base de données Jet interprète ces deux guillemets simples comme un ensemble.
  • Incorporer la fonction Chr() ; Chr(39) est le guillemet simple et Chr (34) est le guillemet double.
Vous trouverez ci-dessous des exemples de chaque méthode :
   [Last Name]="O'Conner"
   [Last Name]='O''Conner'
   [Last Name]='O' & Chr(39) & 'Conner'
				

Choix d'une méthode et IT implémentation de guillemets simples

Comme vous pouvez le voir, la première méthode est la plus simple à lire, mais étant donné que Visual Basic utilise des guillemets doubles comme un délimiteur de chaîne, il n'est pas simple à implémenter. Dans un programme Visual Basic, les deux dernières options nécessitent que vous savez à l'avance ou non un utilisateur a entré un guillemet en tant que partie intégrante de la chaîne de recherche ; puis vous auriez besoin d'analyser et ajouter le guillemet simple supplémentaire ou une fonction Chr(39).

Gardez à l'esprit que Visual Basic lui-même utilise des guillemets doubles comme un délimiteur de littéral de chaîne. Les lignes de code suivantes montrent comment implémenter les requêtes dans un programme Visual Basic pour effectuer une opération «Recordset.FindFirst critères $» :
   criteria$ = "[Last Name]=" & Chr(34) & "O'Conner" & Chr(34)
   criteria$ = "[Last Name]=""O'Conner"""
   criteria$ = "[Last Name]='O''Conner'"
   criteria$ = "[Last Name]='O' & Chr(39) & 'Conner'"
				

La première méthode utilise la fonction Chr (34) de Visual Basic pour incorporer des guillemets doubles dans la chaîne passée au moteur de base de données Jet. La deuxième méthode utilise deux guillemets doubles dans une ligne qui Visual Basic interprète et incorpore comme un guillemet double dans la chaîne. La troisième option passe les deux guillemets simples pour le moteur de base de données Jet, qui les interprète comme un guillemet simple. La quatrième option transmet la fonction Chr(39) incorporée pour le moteur de base de données Jet, qui est évaluée comme le guillemet simple.

Recherchez une valeur de type String qui contient des guillemets double

Lors de la recherche d'une chaîne contenant un guillemet double, utilisez les mêmes règles, il vous suffit d'échange entre guillemets doubles pour unique :
  • Utilisez des guillemets simples pour délimiter la chaîne littérale.
  • Placez deux guillemets doubles adjacents. Le moteur de base de données Jet interprète comme un guillemet double.
  • Incorporer la fonction Chr(). Chr (34) est le guillemet double.
Vous trouverez ci-dessous des exemples de chaque méthode :
   [Famous Quotes]='"To Be or Not To Be"'
   [Famous Quotes]="""To Be or Not To Be"""
   [Famous Quotes]=Chr(34) & "To Be or Not To Be" & Chr(34)
				

Choix d'une méthode et la mise en ?uvre pour double guillemets

Voici comment implémenter ces méthodes dans Visual Basic :
   criteria$ = "[Famous Quotes]='""To Be or Not To Be""'"
   criteria$ = "[Famous Quotes]=""""""To Be or Not To Be"""""""
   criteria$ = "[Famous Quotes]=Chr(34) & ""To Be or Not To Be"" & Chr(34)"
				

Le premier exemple utilise deux guillemets doubles, afin que Visual Basic incorpore un dans la chaîne. Le deuxième exemple utilise six entre guillemets doubles dans une ligne, afin que Visual Basic incorpore trois dans une ligne dans la chaîne. Le moteur de base de données Jet utilise ensuite ces trois guillemets doubles comme suit :
  • Une des trois est un délimiteur.
  • Les deux autres sont considérés comme un guillemet double à rechercher dans la chaîne littérale.
Le dernier exemple incorpore Chr (34), qui utilise Jet en tant que séparateur, puis Visual Basic interprète les deux guillemets doubles et incorpore un dans la chaîne.

Traitez les chaînes qui contiennent les deux Single et double guillemets

Autres complications surviennent lorsque vous avez besoin de rechercher une chaîne qui contient une seule et un guillemet double. Par exemple, si vous souhaitez rechercher un champ [Hauteur] d'une base de données médical pour tous les patients plus 5 «10» (cinq mètres 25,4 cm) en hauteur. Ici, vous devez décider quel guillemet à utiliser comme un délimiteur. L'exemple suivant vous montre ce que le moteur de base de données Jet a besoin d'afficher :
  • Guillemet simple comme délimiteur :
       [Height]='5''10"'                 ' Two single quotes embed as one
       [Height]='5' & Chr(39) & '10"'    ' Use Chr(39) to embed a single quote
    
    						
  • Guillemet double comme délimiteur :
       [Height]="5'10"""                 ' Two double quotes embed as one
       [Height]="5'10" & Chr(34)         ' Use Chr(34) to embed a double quote
    
    						
Dans Visual Basic, implémentez les exemples ci-dessus dans une méthode FindFirst :
  • Guillemet simple comme délimiteur :
       criteria$ = "[Height]='5''10""'"
       criteria$ = "[Height]='5' & Chr(39) & '10""'"
    
    						
  • Guillemet double comme délimiteur :
       criteria$ = "[Height]=""5'10"""""""
       criteria$ = "[Height]=""5'10"" & Chr(34)"
    
    						

Caractère de canal ou une barre verticale

Le caractère ou d'une barre verticale est un caractère réservé pour le moteur de base de données Jet. Il indique le moteur de base de données Jet pour évaluer l'identificateur avant d'évaluer le reste de l'expression. Par conséquent, le moteur de base de données Jet insère la valeur de l'identificateur dans l'expression et évalue ensuite.

Barres verticales les plus souvent utilisés dans des fonctions d'agrégation domaine lorsque vous souhaitez que la fonction à recalculer automatiquement la valeur de que retour dans les filtres. Ou barres verticales sont utilisés comme alternative à l'opérateur «et» commercial (&) lorsque vous concaténez des valeurs de texte. De ce fait, vous ne pouvez pas incorporer la verticale (|) de la barre dans une chaîne littérale, vous devez incorporer la fonction Chr(). Chr(124) est la barre verticale.

Par exemple, si vous avez besoin de rechercher un champ [réponse] Yes|No, le moteur de base de données Jet doit voir :
   [Response]='Yes' & Chr(124) & 'No'
				

Si vous tentez d'incorporer la barre verticale dans la chaîne (par exemple, [réponse] = 'Yes|No'), le moteur de base de données Jet vous donnera une erreur de syntaxe.

Dans Visual Basic, implémentez l'instruction ci-dessus dans une chaîne de critères de la méthode FindFirst :
   criteria$ = "'Yes' & Chr(124) & 'No'"
				

Propriétés

Numéro d'article: 147687 - Dernière mise à jour: jeudi 1 juillet 2004 - Version: 2.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
Mots-clés : 
kbmt kbhowto KB147687 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 147687
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com