ワイルドカード文字
ワイルドカード文字を使用して、データ列または式の中のパターンを検索できます。たとえば、姓が "Van" で始まるか "son" で終わる従業員をすべて検索できます。
ワイルドカード文字
ワイルドカード文字を使用して、文字列として扱うことのできる列を検索できます。データ型が character 型である列は、常に文字列として扱うことができます。一部のデータベースでは、datetime 型のデータを含む列も文字列として扱うことができます。
パターンを検索するには、LIKE 演算子を使用し、検索文字列の中の 1 個以上の文字をワイルドカード文字で置き換えます。次のいずれかのワイルドカード文字を使用できます。
ワイルドカード文字 |
説明 |
---|---|
% (パーセント記号) |
0 個以上の文字がその位置に入る。 |
_ (アンダースコア) |
1 個の文字がその位置に入る。 |
たとえば、"Van" で始まる名前をすべて検索する場合は、LIKE 'Van%' という検索条件を指定できます。"Jan"、"Jen"、"Jon" などの名前を検索する場合は、LIKE 'J_n' という検索条件を指定できます。
ワイルドカード文字として使用される文字の検索
検索する文字列に、ワイルドカード文字として使用される文字が含まれている場合もあります。たとえば、titles テーブルで、タイトルに "10%" を含む出版物をすべて検索するような場合です。検索する文字列に "%" が含まれているため、この文字がリテラル文字列でありワイルドカード文字ではないことを示す必要があります。
ワイルドカード文字として解釈される文字を検索する場合は、エスケープ文字を指定できます。リテラルとして指定する文字 "%" または "_" の直前にエスケープ文字を入力します。エスケープ文字を指定するには、LIKE 検索条件の直後に ESCAPE 句を指定します。これは、条件ペインの [抽出条件] 列、または SQL ペインで指定できます。
たとえば、文字列 "10%" を含むタイトルをすべて検索する場合を考えます。文字 "#" をエスケープ文字として定義することにより、リテラルとして指定する文字 "%" の前に "#" を入力できるようにします。これは抽出条件ペインで次のように指定できます。
LIKE '%10#%%' ESCAPE '#'
この結果、SQL ステートメントの WHERE 句は次のようになります。
WHERE title LIKE '%10#%%' ESCAPE '#'
[!メモ]
エスケープ文字を定義できるのは SQL ペインだけです。
datetime 列の検索
datetime データ型の列に対して作業する場合は、日付または時刻の任意の部分を検索できます。これには、月名の短縮形や年号の完全な形も含まれます。
[!メモ]
datetime 列を検索する機能は、使用しているデータベースの種類、および datetime データ型を文字列として検索できるかどうかによって異なります。詳細については、データベースのドキュメントを参照してください。
たとえば、Microsoft SQL Server データベースでは、次の LIKE 句を使用して、日付が 1994 年に含まれる行をすべて検索できます。
LIKE '%1994%'
次の例では、年に関係なく日付が 1 月に含まれる列をすべて検索します。
LIKE 'Jan%'
datetime 列を検索するために使用できる文字列の正確な形式は、使用しているデータベースによって異なります。
[!メモ]
データベースのあるコンピューターとクエリを実行するコンピューターの地域設定が異なる場合は、予測しない結果が得られる場合があります。これを防止するには、データベースのあるコンピューターの日付形式を指定する式を使用します。詳細については、データベース管理システムのマニュアルを参照してください。
ワイルドカード検索の例
ワイルドカード文字の使用例を次に示します。
検索式 |
Description |
一致する文字列の例 |
---|---|---|
|
"Van" で始まる値を検索します。 |
Vann、Van Beeck、Vanderhorn |
|
"J" で始まり "n" で終わる値を検索します。 |
Jon、Johnson、Jason、Juan |
|
"son" で終わる値を検索します。 |
Son、Anderson |
|
文字列に "sam" を含む値を検索します。 |
Sam、Samson、Grossam |
|
datetime 列で年に関係なく 3 月に含まれる値を検索します。 |
3/1/94 01 Mar 1992 |
|
datetime 列で 1994 年の値を検索します。 |
12/1/94 01 Jan 1994 |
|
"Mac" で始まる 4 文字の値を検索します。 |
Mack、Macs |
|
"dam" で終わる 4 文字の値を検索します。 |
Adam、Odam |
|
"s" と "n" の間に任意の 1 文字を含む文字列が末尾であり、その前に任意の数の文字が含まれる値を検索します。 |
Anderson、Andersen、Johnson、san、sun |