Argomenti del valore dei criteri
Alcuni argomenti nelle funzioni catalogo, ad esempio l'argomento TableName in SQLTables, accettano modelli di ricerca. Questi argomenti accettano criteri di ricerca se l'attributo dell'istruzione SQL_ATTR_METADATA_ID è impostato su SQL_FAL; sono argomenti identificatori che non accettano un criterio di ricerca se questo attributo è impostato su SQL_TRUE.
I caratteri del criterio di ricerca sono:
l’underscore (_), che rappresenta qualsiasi carattere singolo;
segno di percentuale (%), che rappresenta qualsiasi sequenza di zero o più caratteri;
carattere di escape, specifico del driver e usato per includere caratteri di sottolineatura, segni di percentuale e carattere di escape come valori letterali. Se il carattere di escape precede un carattere non speciale, il carattere di escape non ha un significato speciale. Se il carattere di escape precede un carattere speciale, il carattere di escape viene preceduto dal carattere speciale. Ad esempio, "\a" verrebbe considerato come due caratteri, "\" e "a", ma "\%" verrebbe considerato come carattere singolo non speciale "%".
Il carattere di escape viene recuperato con l'opzione SQL_SEARCH_PATTERN_ESCAPE in SQLGetInfo. Deve precedere qualsiasi carattere di sottolineatura, segno di percentuale o carattere di escape in un argomento che accetta modelli di ricerca per includere tale carattere come valore letterale. Gli esempi sono riportati nella tabella seguente.
Criteri di ricerca | Descrizione |
---|---|
%A% | Tutti gli identificatori contenenti la lettera A |
ABC_ | Tutti e quattro gli identificatori di carattere che iniziano con ABC |
ABC\_ | Identificatore ABC_, supponendo che il carattere di escape sia una barra rovesciata (\) |
\\% | Tutti gli identificatori che iniziano con una barra rovesciata (\), supponendo che il carattere di escape sia una barra rovesciata |
È necessario prestare particolare attenzione all'escape dei caratteri di ricerca negli argomenti che accettano criteri di ricerca. Ciò è particolarmente vero per il carattere di underscore, comunemente usato negli identificatori. Un errore comune nelle applicazioni consiste nel recuperare un valore da una funzione catalogo e passare tale valore a un argomento del criterio di ricerca in un'altra funzione catalogo. Ad esempio, supponiamo che un'applicazione recuperi il nome della tabella MY_TABLE dal set di risultati di SQLTables e lo passi a SQLColumns per recuperare un elenco di colonne in MY_TABLE. Anziché ottenere le colonne per MY_TABLE, l'applicazione otterrà le colonne per tutte le tabelle che corrispondono al criterio di ricerca MY_TABLE, ad esempio MY_TABLE, MY1TABLE, MY2TABLE e così via.
Nota
I driver ODBC 2.x non supportano i criteri di ricerca nell'argomento CatalogName in SQLTables. I driver ODBC 3*.x* accettano criteri di ricerca in questo argomento se l'attributo dell'ambiente SQL_ATTR_ ODBC_VERSION è impostato su SQL_OV_ODBC3; non accettano criteri di ricerca in questo argomento se è impostato su SQL_OV_ODBC2.
Il passaggio di un puntatore Null a un argomento del criterio di ricerca non vincola la ricerca di tale argomento; ovvero, un puntatore Null e il criterio di ricerca % (qualsiasi carattere) sono equivalenti. Tuttavia, un criterio di ricerca di lunghezza zero, ovvero un puntatore valido a una stringa di lunghezza zero, corrisponde solo alla stringa vuota ("").