模式值自变量

目录函数中的某些参数(如 SQLTables 中的 TableName 参数)接受搜索模式。 如果 SQL_ATTR_METADATA_ID 语句属性设置为 SQL_FALSE,则这些参数接受搜索模式;如果此属性设置为 SQL_TRUE,则它们是不接受搜索模式的标识符参数。

搜索模式字符包括:

  • 表示任何单个字符的下划线 (_)。

  • 百分号 (%),表示零个或多个字符的任何序列。

  • 转义字符(特定于驱动程序),用于将下划线、百分号和转义字符作为文本包含在内。 如果转义字符位于非特殊字符之前,则转义字符没有特殊含义。 如果转义字符位于特殊字符之前,它将转义特殊字符。 例如,"\a" 将被视为两个字符 "\" 和 "a",但 "\%" 将被视为非特殊单字符 "%"。

使用 SQLGetInfo 中的 SQL_SEARCH_PATTERN_ESCAPE 选项检索转义字符。 它必须位于参数中的任何下划线、百分号或转义字符之前,该参数接受搜索模式以将该字符作为文本包含。 下表显示了几个示例。

搜索模式 说明
%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,则它们不接受此参数中的搜索模式。

将空指针传递给搜索模式参数不会限制该参数的搜索;也就是说,空指针和搜索模式 %(任何字符)是等效的。 但是,零长度搜索模式(即,指向长度为零的字符串的有效指针)仅匹配空字符串 ("")。