パターン値の引数
SQLTables の TableName 引数など、カタログ関数の一部の引数は、検索パターンを受け入れます。 SQL_ATTR_METADATA_ID ステートメント属性が SQL_FALSE に設定されている場合、これらの引数は検索パターンを受け入れます。これらは、この属性が SQL_TRUE に設定されている場合、検索パターンを受け入れられない識別子引数です。
検索パターンの文字は次のとおりです:
任意の 1 文字を表すアンダースコア (_)。
パーセント記号 (%)、0 個以上の文字の任意のシーケンスを表します。
エスケープ文字。これはドライバー固有であり、アンダースコア、パーセント記号、およびエスケープ文字をリテラルとして含めるために使用されます。 エスケープ文字が特殊文字以外の文字の前にある場合、エスケープ文字には特別な意味はありません。 エスケープ文字が特殊文字の前にある場合は、特殊文字をエスケープします。 たとえば、「\a」 は 「\」 と 「a」 の 2 つの文字として扱われますが、「\%」 は非特殊な単一文字 「%」 として扱われます。
エスケープ文字は、SQLGetInfo の SQL_SEARCH_PATTERN_ESCAPE オプションを使用して取得されます。 検索パターンを受け入れる引数内のアンダースコア、パーセント記号、またはエスケープ文字の前に、その文字をリテラルとして含める必要があります。 以下の表に例を示します。
検索パターン | 説明 |
---|---|
%A% | 文字 A を含むすべての識別子 |
ABC_ | ABC で始まる 4 つの文字識別子すべて |
ABC\_ | エスケープ文字がバックスラッシュ (\) であると仮定して、識別子ABC_ |
\\% | エスケープ文字がバックスラッシュであると仮定して、バックスラッシュ (\) で始まるすべての識別子 |
検索パターンを受け入れる引数の検索パターン文字をエスケープするには、特別な注意が必要です。 これは、識別子でよく使用されるアンダースコア文字に特に当てはまります。 アプリケーションでよくある間違いは、あるカタログ関数から値を取得し、その値を別のカタログ関数の検索パターン引数に渡すことである。 たとえば、アプリケーションが SQLTables の結果セットからテーブル名MY_TABLEを取得し、これを SQLColumns に渡して、MY_TABLE内の列の一覧を取得するとします。 アプリケーションは、MY_TABLE の列を取得する代わりに、MY_TABLE、MY1TABLE、MY2TABLE など、MY_TABLE 検索パターンに一致するすべてのテーブルの列を取得します。
注
ODBC 2.x ドライバーは、SQLTables の CatalogName 引数の検索パターンをサポートしていません。 ODBC 3*.x* ドライバーは、SQL_ATTR_ ODBC_VERSION 環境属性が SQL_OV_ODBC3 に設定されている場合、この引数で検索パターンを受け入れます。SQL_OV_ODBC2 に設定されている場合、この引数では検索パターンを受け入れません。
検索パターン引数に null ポインターを渡しても、その引数の検索は制約されません。つまり、null ポインターと検索パターン % (任意の文字) は同等です。 ただし、長さ 0 の検索パターン (長さ 0 の文字列への有効なポインター) は、空の文字列 ("") にのみ一致します。