Argumente des Musterwerts
Einige Argumente in den Katalogfunktionen, z. B. das Argument "TableName " in SQLTables, akzeptieren Suchmuster. Diese Argumente akzeptieren Suchmuster, wenn das attribut der SQL_ATTR_METADATA_ID-Anweisung auf SQL_FALSE festgelegt ist; es handelt sich um Bezeichnerargumente, die kein Suchmuster akzeptieren, wenn dieses Attribut auf SQL_TRUE festgelegt ist.
Die Suchmusterzeichen sind:
Ein Unterstrich (_), der ein beliebiges einzelnes Zeichen darstellt.
Ein Prozentzeichen (%), das eine beliebige Abfolge von Null oder mehr Zeichen darstellt.
Ein Escapezeichen, das treiberspezifisch ist und verwendet wird, um Unterstriche, Prozentzeichen und das Escapezeichen als Literale einzuschließen. Wenn dem Escapezeichen ein Nicht-Sonderzeichen vorangestellt ist, hat das Escapezeichen keine besondere Bedeutung. Wenn dem Escapezeichen ein Sonderzeichen vorangestellt ist, wird das Sonderzeichen escapes. Beispielsweise würde "\a" als zwei Zeichen behandelt, "\" und "a", aber "\%" würde als nicht spezielles einzelnes Zeichen "%" behandelt.
Das Escapezeichen wird mit der Option SQL_SEARCH_PATTERN_ESCAPE in SQLGetInfo abgerufen. Sie muss einem Unterstrich, Prozentzeichen oder Escapezeichen in einem Argument vorangestellt werden, das Suchmuster akzeptiert, um dieses Zeichen als Literal einzuschließen. Beispiele sind in der folgenden Tabelle dargestellt.
Suchmuster | Beschreibung |
---|---|
%A% | Alle Bezeichner, die den Buchstaben A enthalten |
ABC_ | Alle vier Zeichenbezeichner beginnend mit ABC |
ABC\_ | Der Bezeichner ABC_, vorausgesetzt, das Escapezeichen ist ein umgekehrter Schrägstrich (\) |
\\% | Alle Bezeichner, die mit einem umgekehrten Schrägstrich (\) beginnen, vorausgesetzt, das Escapezeichen ist ein umgekehrter Schrägstrich. |
Es muss besondere Sorgfalt beachtet werden, um Suchmusterzeichen in Argumenten zu escapen, die Suchmuster akzeptieren. Dies gilt insbesondere für das Unterstrichzeichen, das häufig in Bezeichnern verwendet wird. Ein häufiger Fehler in Anwendungen besteht darin, einen Wert aus einer Katalogfunktion abzurufen und diesen Wert an ein Suchmusterargument in einer anderen Katalogfunktion zu übergeben. Angenommen, eine Anwendung ruft den Tabellennamen MY_TABLE aus dem Resultset für SQLTables ab und übergibt diese an SQLColumns , um eine Liste von Spalten in MY_TABLE abzurufen. Statt die Spalten für MY_TABLE abzurufen, ruft die Anwendung die Spalten für alle Tabellen ab, die dem Suchmuster entsprechen, MY_TABLE, z. B. MY_TABLE, MY1TABLE, MY2TABLE usw.
Hinweis
ODBC 2.x-Treiber unterstützen keine Suchmuster im CatalogName-Argument in SQLTables. ODBC 3*.x*-Treiber akzeptieren Suchmuster in diesem Argument, wenn das attribut für die SQL_ATTR_ ODBC_VERSION Umgebung auf SQL_OV_ODBC3 festgelegt ist; sie akzeptieren keine Suchmuster in diesem Argument, wenn sie auf SQL_OV_ODBC2 festgelegt ist.
Das Übergeben eines Nullzeigers an ein Suchmusterargument schränkt die Suche für dieses Argument nicht ein; d. h. ein NULL-Zeiger und das Suchmuster % (beliebige Zeichen) sind gleichwertig. Ein Suchmuster der Länge Null ( d. a. ein gültiger Zeiger auf eine Zeichenfolge der Länge Null - entspricht jedoch nur der leeren Zeichenfolge ("").