目錄函式中的某些參數,例如 SQLTables 中的 TableName 參數,接受搜尋模式。 若SQL_ATTR_METADATA_ID語句屬性設為SQL_FALSE,這些參數可接受搜尋模式;它們是識別碼參數,若此屬性設為 SQL_TRUE,則不接受搜尋模式。
搜尋模式的字元如下:
底線(_),代表任何單一字元。
一個百分比符號(%),代表任何零個或多個字元的序列。
逃脫字元是特定於驅動程式使用,用來將底線、百分號及逃脫字元視作字面符號。 如果轉義字元位於非特殊字元之前,則轉義字元沒有特殊意義。 如果逸出字元在特殊字元之前,則會逸出該特殊字元。 例如,「\a」會被視為兩個字元「\」和「a」,而「\%」則被視為非特殊單字元「%“。
轉義字元可透過 SQLGetInfo 中的 SQL_SEARCH_PATTERN_ESCAPE 選項取得。 要使該字元以字面形式包含在接受搜尋模式的論元中,必須放在任何下劃線、百分比符號或轉義字元之前。 以下表格展示了範例。
| 搜尋模式 | Description |
|---|---|
| %A% | 所有包含字母 A 的識別碼 |
| ABC_ | 四個字元識別碼皆以 ABC 開頭 |
| ABC\_ | 識別碼ABC_,假設逃脫字元為反斜線(\) |
| \\% | 所有以反斜線(\)開頭的識別碼,假設跳脫字元是反斜線 |
在接受搜尋模式的參數中,必須特別注意跳脫搜尋模式字元。 這對於底線字元尤其如此,該字元常用於識別碼中。 應用程式中常見的錯誤是從一個目錄函式取得一個值,然後將該值傳入另一個目錄函式中的搜尋模式參數。 例如,假設一個應用程式從 SQLTables 的結果集取得資料表名稱 MY_TABLE,並將此名稱傳給 SQLColumns 以取得 MY_TABLE 中的欄位清單。 應用程式不會取得 MY_TABLE 的欄位,而是取得所有符合搜尋模式MY_TABLE的資料表欄位,例如 MY_TABLE、MY1TABLE、MY2TABLE 等。
備註
ODBC 2。x 驅動程式在 SQLTables 的 CatalogName 參數中不支援搜尋模式。 如果 SQL_ATTR_ ODBC_VERSION 環境屬性設為 SQL_OV_ODBC3,ODBC 3*.x* 驅動程式在此參數中接受搜尋模式;如果此參數設為SQL_OV_ODBC2,則不接受搜尋模式。
將空指標傳給搜尋模式參數並不會限制該參數的搜尋;也就是說,空指標與搜尋模式 %(任意字元)是等價的。 然而,零長度的搜尋模式——即指向長度為零字串的有效指標——只匹配空字串(“”)。