データベース名やテーブル名のパターンを指定するには、ワイルドカード文字%および?を使用します。
次のテーブルは、CheckTableによるワイルドカード文字の解釈方法を示しています。
ワイルドカード文字 | 対応 |
---|---|
% (パーセント記号) | Null列を含め、任意の長さの文字列。 |
? (クエスチョン マーク) | 単一の文字。 |
ワイルドカード文字はどのように組み合わせて使用してもかまいません。しかし、ワイルドカード文字を16進数形式で使用することはできません。
次のテーブルは、名前でのワイルドカード文字の使用方法を示しています。
ワイルドカード文字 | 対応 |
---|---|
% | データベース名。 |
%.% | テーブル名。 |
%database% | 次の文字列を含むデータベース名。database |
SalesDB% | 次の文字列から始まるデータベース名。SalesDB |
ワイルドカード構文
CheckTableでは、ワイルドカード文字の使用がサポートされており、データベースまたは表の名前の特定の位置で使用可能な文字群を表わせます。CheckTableでチェックする、またはチェックしない、表およびデータベースのリストを指定するときには、ワイルドカード構文を使用します。ワイルドカード構文は、左角括弧[で開始し、右角括弧]で終了します。
次の図は、データベース名またはテーブル名の構文を示しています。
構文要素 | 指定内容 |
---|---|
Starting char | 以下のうちの1つです。
|
Start range char | 以下のうちの1つです。
|
Alphabet range | ハイフンで区切られた2つのアルファベット。 範囲は昇順でも降順でもかまいません。どちらのアルファベットも、大文字か小文字の同じタイプでなければなりません。 |
Remaining chars | 以下のうちの1つです。
|
Digit | 0から9までの任意の数字。 |
Hyphen range | ハイフンで区切られた2つのアルファベットまたは2つの数字。 範囲は昇順でも降順でもかまいません。どちらの文字も、大文字か小文字のアルファベットあるいは数字にして、同じタイプにする必要があります。 |
Char | 以下のうちの1つです。
|
表またはデータベース名では他の特殊文字を使用できますが、ワイルドカード構文では他の特殊文字を使用できません。ワイルドカード構文で構文エラーが発生した場合、CheckTableはアボートし、エラー メッセージが表示されます。
漢字その他の日本語文字を名前で使用する場合のルールについては、<Teradata Vantage™ SQL基礎、B035-1141>の「基本的なSQL構文規則および語彙」を参照してください。構文エラー メッセージの詳細については、構文エラーのメッセージを参照してください。
例: ワイルドカード構文の使用
CHECK DB[15] AT LEVEL ONE;
このワイルドカード構文では、データベース名の3番目の文字に、2つの使用可能値(1および5)を定義しています。CheckTableは、データベースDB1とDB5のすべてのテーブルをレベル1でチェックします。
例: 複数のワイルドカード構文の使用
CHECK D[BD]1.T[123] AT LEVEL ONE;
データベース名または表名では、任意の位置でワイルドカード構文を使用できます。CheckTableは、データベースDB1およびDD1のテーブルT1、T2、T3をチェックします。
ワイルドカード構文使用時のルール
CHECKコマンドでワイルドカード構文を使用するときには、次のルールが適用されます。特に注記されない限り、例に示されているデータベースおよびテーブルがシステムに存在するとします。
ルール | 例 |
---|---|
ワイルドカード構文では、次の有効なASCII文字を指定できます。
名前の最初の文字を記述するために、数字(0 … 9)をワイルドカードとして使用することはできません。 |
例1: 次に示すのは有効なコマンドです。CHECK db1.t[#af_2r]1 AT LEVEL ONE; 例2:次に示すのは有効なコマンドではありません。 CHECK db[#,kA-d159]xy AT LEVEL ONE; 上記のコマンドは、データベース名に指定したワイルドカードに無効なカンマ(,)が含まれているため、構文エラーになります。構文エラー メッセージの詳細については、構文エラーのメッセージを参照してください。 |
ワイルドカード文字は角括弧内に指定する必要があります。ワイルドカード構文は、左角括弧[で開始し、右角括弧]で終了します。 | 例1:データベースdb1、db2、db3、db4、およびdb5が存在し、db1とdb5のテーブルだけをチェックするとします。次のように入力します。CHECK db[15] AT LEVEL ONE; CheckTableは、データベースdb1とdb5のすべてのテーブルをレベル1でチェックします。このワイルドカード構文では、データベース名の3番目の文字に、2つの使用可能値(1および5)を定義しています。 例2:データベースdb1、dc1、dd1などが存在し、各データベースには表T1、T2、T3などが含まれるものとします。名前の任意の位置にワイルドカード構文を使用し、次のように入力します。 CHECK d[bd]1.t[123] AT LEVEL ONE; CheckTableは、データベースdb1およびdd1のテーブルt1、t2、t3をチェックします。 例3: 名前の複数の位置にワイルドカード構文を指定するには、次のように入力します。 CHECK db[12][pq] AT LEVEL TWO; CheckTableは、データベースdb1p、db2p、db1q、およびdb2qをレベル2でチェックします。ワイルドカード構文は、データベース名の3番目と4番目の文字に可能値を定義しています。 |
ワイルドカード構文の中では特殊文字%と?を指定できません。ただし、特殊文字%および?を、有効な任意のワイルドカード構文と併せて使用することは可能です。 | 例1:データベースdba1、dba2、db11およびdb12が存在し、データベースdba1、dba2、db11、およびdb12をチェックするとします。次のように入力します。CHECK db[a1]? at level one; このコマンドは、'?'がワイルドカード構文の外側にあるため、有効です。 例2:次のものは、ワイルドカード構文では'?'が認められていないため、有効なコマンドではありません。 CHECK db[a1?] at level one; |
ワイルドカード構文を使用して、チェックするデータベースおよびテーブルの名前かリストと、チェックしないデータベースかテーブルのリストを指定できます。 | 例1:データベースdb1、db2、db3およびdb4が存在し、次のように入力するとします。CHECK db% exclude db[34] at level one; データベースdb1とdb2がチェックされます。 例2: データベースdb1、db2、db3およびdb4が存在し、これらのデータベースにはすべて、テーブルt1、t2、t3およびt4があるとします。次のように入力します。 CHECK db[23] exclude t[14] at level one; CheckTableは、データベースdb2およびdb3のテーブルt2とt3をチェックします。 |
2つの文字をハイフン(-)で区切ることにより文字の範囲を指定するときに、ワイルドカード構文を使用できます。例えば、ハイフンで区切られたCとJ (C-J)は、CとJを含め、辞書的にその間にあるすべての文字を表わします。
|
例1:CHECK db1.t[1-35] AT LEVEL ONE; CheckTableは、データベースdb1のt1、t2、t3、およびt5テーブルをレベル1でチェックします。1-3は範囲と見なされ、5は別の値となります。 例2: CHECK db[a-5] AT LEVEL ONE; チェックは行なわれません。CheckTableは、dbnameに指定した範囲が無効なので、構文エラーをレポートします。構文エラー メッセージの詳細については、構文エラーのメッセージを参照してください。 |
ワイルドカード構文には、システム内のオブジェクト名と一致しないと思われる文字を含められます。 構文に含まれる文字の一部が、システムのオブジェクト名で指定された位置と一致しない場合、CheckTableは指定したワイルドカードと合致する名前を持つすべてのオブジェクトをチェック(またはチェックから除外)します。CheckTableは、文字列に一致するオブジェクトがない場合は無視します。これはワイルドカードの数に関係なく当てはまります。 |
例1: システムに、データベースdb1とdb5だけが存在し、db2、db3、などが存在しないとします。 次のように入力します。CHECK db[125] AT LEVEL ONE; CheckTableは、データベースdb1とdb5のすべてのテーブルをレベル1でチェックします。データベースdb2が存在しないので、CheckTableはワイルドカード構文の文字2を無視します。 例2: システムに、データベースdb1が存在しますが、db2、db3、またはdb4が存在しないとします。次のように入力します。 CHECK db[1-4] AT LEVEL ONE; CheckTableは、データベースdb1のすべてのテーブルをチェックし、残りのワイルドカード文字を無視します。 |
ワイルドカード構文で同じ文字を繰り返し使用しても問題ありません。構文の中で同じ位置の同じ文字を繰り返す場合、CheckTableは最初のものを認識し、繰り返されたインスタンスは無視します。 | 例1:次のコマンドでは、文字bが同じ位置で繰り返されています。CHECK d[abb]1 AT LEVEL ONE; CheckTableは、データベースda1およびdb1内のすべてのテーブルをレベル1でチェックし、文字bの2番目のインスタンスを無視します。警告は表示されません。 例2: 次のコマンドではワイルドカードは1文字なので、文字3はハイフン範囲1-5の一部として指定されているとシステムは理解します。 CHECK db[1-53] AT LEVEL ONE; CheckTableは、データベースdb1、db2、db3、db4、およびdb5のテーブルをレベル1でチェックします。CheckTableは、繰り返された文字3を無視します。 |
ワイルドカード構文は、単一引用符または二重引用符で囲まれていると、適用されません。 | 次のコマンドでは、文字pが二重引用符で囲まれたワイルドカードです。CHECK db1."[p]" AT LEVEL ONE; CheckTableは角括弧を無視し、表"[p]"がデータベースdb1に存在している場合には、そのテーブルだけをチェックします。表"[p]"がdb1に存在していない場合、警告が表示されます。 |