Bagikan melalui


Argumen Nilai Pola

Beberapa argumen dalam fungsi katalog, seperti argumen TableName di SQLTables, menerima pola pencarian. Argumen ini menerima pola pencarian jika atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_FALSE; mereka adalah argumen pengidentifikasi yang tidak menerima pola pencarian jika atribut ini diatur ke SQL_TRUE.

Karakter pola pencarian adalah:

  • Garis bawah (_), yang mewakili satu karakter.

  • Tanda persen (%), yang mewakili urutan nol atau lebih karakter.

  • Karakter escape, yang khusus untuk driver dan digunakan untuk menyertakan garis bawah, tanda persen, dan karakter escape sebagai harfiah. Jika karakter escape mendahului karakter non-khusus, karakter escape tidak memiliki arti khusus. Jika karakter escape mendahului karakter khusus, karakter tersebut akan lolos dari karakter khusus. Misalnya, "\a" akan diperlakukan sebagai dua karakter, "\" dan "a", tetapi "\%" akan diperlakukan sebagai karakter tunggal non-khusus "%".

Karakter escape diambil dengan opsi SQL_SEARCH_PATTERN_ESCAPE di SQLGetInfo. Ini harus mendahului garis bawah, tanda persen, atau karakter escape dalam argumen yang menerima pola pencarian untuk menyertakan karakter tersebut sebagai harfiah. Contoh diperlihatkan dalam tabel berikut.

Pola pencarian Deskripsi
%A% Semua pengidentifikasi yang berisi huruf A
ABC_ Keempat pengidentifikasi karakter dimulai dengan ABC
ABC\_ Pengidentifikasi ABC_, dengan asumsi karakter escape adalah garis miring terbelakang (\)
\\% Semua pengidentifikasi yang dimulai dengan garis miring terbelakang (\), dengan asumsi karakter escape adalah garis miring terbelakang

Perawatan khusus harus diambil untuk menghindari karakter pola pencarian dalam argumen yang menerima pola pencarian. Ini terutama berlaku untuk karakter garis bawah, yang umumnya digunakan dalam pengidentifikasi. Kesalahan umum dalam aplikasi adalah mengambil nilai dari satu fungsi katalog dan meneruskan nilai tersebut ke argumen pola pencarian di fungsi katalog lain. Misalnya, aplikasi mengambil nama tabel MY_TABLE dari kumpulan hasil untuk SQLTables dan meneruskan ini ke SQLColumns untuk mengambil daftar kolom di MY_TABLE. Alih-alih mendapatkan kolom untuk MY_TABLE, aplikasi akan mendapatkan kolom untuk semua tabel yang cocok dengan pola pencarian MY_TABLE, seperti MY_TABLE, MY1TABLE, MY2TABLE, dan sebagainya.

Catatan

ODBC 2.driver x tidak mendukung pola pencarian dalam argumen CatalogName di SQLTables. Driver ODBC 3*.x* menerima pola pencarian dalam argumen ini jika atribut lingkungan SQL_ATTR_ ODBC_VERSION diatur ke SQL_OV_ODBC3; mereka tidak menerima pola pencarian dalam argumen ini jika diatur ke SQL_OV_ODBC2.

Meneruskan penunjuk null ke argumen pola pencarian tidak membatasi pencarian untuk argumen tersebut; artinya, pointer null dan pola pencarian % (karakter apa pun) setara. Namun, pola pencarian panjang nol - yaitu, penunjuk yang valid ke string panjang nol - hanya cocok dengan string kosong ("").