Frage

Was ist die richtige multi-wildcard-Zeichen in der LIKE-operator in Microsoft Jet-und was die Einstellung betrifft es (wenn überhaupt)?Ich unterstütze eine alte ASP-Anwendung, die läuft auf Microsoft Jet (auf eine Access-Datenbank), und er nutzt das % - Zeichen in der LIKE-operator ist, aber ich habe einen Kunden, der hat offenbar Probleme in seiner Umgebung, weil die % - Zeichen wird verstanden als reguläres Zeichen, und ich gehe davon aus, dass seiner multi-Zeichen für Platzhalter ist *.Auch bin ich mir fast sicher, dass ich in der Vergangenheit geschrieben haben, die Anwendung, mit der Abfragen mit * anstelle von %.Schließlich, Microsoft Access (als Anwendung) funktioniert auch nur mit * und nicht % (bin mir aber nicht sicher, wie relevant es ist).

Ich verbrachte etwa 20 Minuten Suche im Internet, ohne irgendwelche brauchbaren Ergebnisse, also dachte ich, es wäre nützlich Fragen auf stackoverflow.Kann jemand wissen es schon, und es ist besser, um die möglichen Antworten auf stackoverflow als jeder andere zufällige Diskussion forum sowieso.

War es hilfreich?

Lösung

Die einfache Antwort ist, dass das Verhalten der Platzhalterzeichen wird abhängig von der ANSI-Abfrage-Modus der Schnittstelle verwendet wird.

ANSI-89-Abfrage-Modus ("traditionellen Modus") verwendet die * Charakter, ANSI-92-Abfragemodus ('SQL Server-Kompatibilität-Modus") verwendet die % Charakter.Diese Modi sind spezifisch für ACE/Jet und tragen nur eine vorübergehende ähnlichkeit mit dem ANSI/ISO SQL-89, SQL-92-Standards.

Die ADO-Schnittstelle (OLE-DB) verwendet immer die ANSI-92-Abfragemodus.

Die DAO-Schnittstelle verwendet immer den ANSI-89-Abfrage-Modus.

Wenn Sie ODBC verwenden des Abfrage-Modus kann explizit angegeben werden, über die ExtendedAnsiSQL Flagge.

Die MS Access-Benutzeroberfläche, aus der 2003-version ab, kann entweder die Abfrage Modus, also nicht davon ausgehen, es ist der eine oder andere zu einem bestimmten Zeitpunkt (z.B.verwenden Sie nicht-Abfrage-Modus-spezifische Platzhalterzeichen in gültigkeitsprüfungsregeln).

ACE/Jet-SQL-syntax ALIKE das Schlüsselwort ermöglicht die ANSI-92-Abfragemodus Zeichen (% und _), unabhängig von der Abfrage-Modus der Schnittstelle an, hat aber den leichten Nachteil der ALIKE Stichwort nicht von SQL-92-kompatibel (jedoch ALIKE bleibt sehr portabel).Der größte Nachteil jedoch ist, dass ich verstehen das ALIKE Schlüsselwort wird nicht offiziell unterstützt wird (obwohl ich mir nicht vorstellen kann, wird es verschwinden oder verändert haben, Verhalten sich die Situation bald).

Andere Tipps

Wenn Sie DAO verwenden, verwenden Sie ein Sternchen (und Fragezeichen für einzelne symbol Platzhalter).Wenn Sie ADO verwenden Sie das Prozentzeichen (und den Unterstrich).

Können Sie diese nützlich finden:

http://msdn.microsoft.com/en-us/library/aa140104(office.10).aspx

In der Abfrage-design-raster und mit DAO, die Sie verwenden * bei ADO und ASP, verwenden Sie %

Zugriff auf Jet über ODBC, es ist mir nicht klar, was Platzhalter verwendet werden sollte.Ich würde davon ausgehen, die Natürliche Jet-SQL ones (*/?), da ich aber nie verwendet Jet-Daten über ODBC kann ich nicht sagen.

Innerhalb von Access, wie der Artikel Remou zitiert, sagt, in code, es hängt davon ab, was die data-access-Schnittstelle, die Sie verwenden -- ADO (niemand sollte mit in Access) verwenden Sie %/_ , während die mit DAO (Jet ' s native interface layer) verwenden Sie Jet native Platzhalterzeichen (*/?).

Es gibt eine Ausnahme, die in späteren Versionen von Access ausführen von SQL in Access.Ich weiß nicht, ob es war, Access 2002 oder 2003, die Hinzugefügt wurden, aber heutzutage gibt es eine ANSI-SQL-92-Kompatibilität-Modus, den Sie aktivieren können.Wenn Sie das tun, werden die Platzhalter werden %/_ anstelle von */?.Aber in der Lage, wählen Sie den ANSI-Modus gilt nur innerhalb der Zugriff selbst-als onedaywhen hat uns mitgeteilt, Sie zu wählen, verschiedene Daten-interface-Bibliotheken zu verwenden, die unterschiedliche SQL-Modi, mit ADO über die 92 und DAO-und ODBC-89.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top