Question

Quel est le caractère générique multi-caractère propre à l'opérateur LIKE dans Microsoft Jet et ce paramètre affecte ce (le cas échéant)? Je soutiens une ancienne application ASP qui fonctionne sur Microsoft Jet (sur une base de données Access) et il utilise le symbole% dans l'opérateur LIKE, mais j'ai un client qui a apparemment des problèmes dans son environnement, car le caractère% est comprise comme régulière caractère, et je suppose que son caractère générique à plusieurs caractères est *. De plus, je suis presque sûr que, dans le passé, j'ai demande écrite à l'aide de requêtes * au lieu de%. Enfin, Microsoft Access (comme une application) ne fonctionne qu'avec * et non% (mais je ne sais pas comment il est pertinent).

Je viens de passer environ 20 minutes de recherche Internet sans aucun résultat utile, et je pensais que ce serait utile demander sur stackoverflow. Quelqu'un peut déjà le savoir, et il est préférable de garder les réponses possibles sur stackoverflow que tout autre forum de discussion au hasard de toute façon.

Était-ce utile?

La solution

La réponse droite est que le comportement des caractères génériques dépend du mode de requête ANSI de l'interface utilisée.

ANSI-89 mode de requête ( 'mode traditionnel') utilise le caractère *, le mode de requête ANSI-92 ( «mode de compatibilité SQL Server) utilise le caractère %. Ces modes sont spécifiques à ACE / Jet et ne ressemblent en passant aux SQL-89 et normes SQL-92 ANSI / ISO.

L'interface ADO (OLE DB) utilise toujours ANSI-92 mode de requête.

L'interface DAO utilise toujours ANSI-89 mode de requête.

Lorsque vous utilisez ODBC le mode de requête peut être spécifié explicitement par le drapeau ExtendedAnsiSQL.

L'interface utilisateur MS Access, à partir de la version de 2003, peut utiliser le mode de requête, donc ne supposez pas que ce soit l'un ou l'autre à un moment donné (par exemple, ne pas utiliser des caractères génériques spécifiques requêtes en mode de validation règles).

ACE / Jet syntaxe SQL a un mot-clé ALIKE, qui permet aux ANSI-92 caractères mode de requête (de % et _) quel que soit le mode d'interrogation de l'interface, mais présente l'inconvénient légère du mot-clé ALIKE ne pas être SQL-92 compatible (mais ALIKE reste très portable). Le principal inconvénient, cependant, est que je comprends le mot-clé ALIKE est pas officiellement supporté (bien que je ne peux pas imaginer qu'il disparaîtra ou modifié à tout moment avoir un comportement bientôt).

Autres conseils

Si vous utilisez DAO, astérisque utilisation (et point d'interrogation pour espace réservé symbole unique). Si vous utilisez ADO, utilisez signe pour cent (et soulignent).

Vous pouvez trouver ce utile:

http://msdn.microsoft.com/ fr-fr / bibliothèque / aa140104 (office.10) .aspx

Dans la grille de création de la requête et que vous utilisez DAO *, avec ADO et ASP, vous utilisez%

Accès via ODBC Jet, ce n'est pas clair pour moi ce wildcards à utiliser. Je suppose que les SQL Jet naturel (* /?), Mais depuis que je l'utilise jamais de données Jet via ODBC Je ne peux pas dire.

Dans Access, comme l'article remou cite dit, dans le code, cela dépend de ce que l'interface d'accès aux données que vous utilisez - ADO (que personne ne devrait utiliser depuis Access), vous utilisez% / _, tandis que avec DAO (Jet de couche d'interface native), vous utilisez des caractères génériques natifs de Jet (* /?).

Il y a une exception dans les versions ultérieures d'Access SQL exécution dans Access. Je ne sais pas si c'était Access 2002 ou 2003 qui a ajouté, mais de nos jours, il y a un mode de compatibilité ANSI SQL 92 que vous pouvez activer. Si vous le faites, les jokers deviennent% / _ au lieu de * / ?. Mais être en mesure de choisir le mode ANSI applique uniquement dans Access lui-même - que onedaywhen nous a fait savoir, vous devez choisir les bibliothèques d'interface de données différentes pour utiliser les différents modes SQL, avec ADO en utilisant les 92 et DAO et ODBC 89

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top