ワイルドカードを利用して文字列フィールドを検索するSQL分を紹介します。
概要
文字列フィールドでワイルドカードを利用して検索する場合には LIKE 演算子を利用します。
書式
SELECT ... WHERE (列名) LIKE (検索式)
ワイルドカードには以下の文字を利用します。
ワイルドカード文字 | 意味 |
% | 0文字以上の任意の文字列 |
_ | 任意の1文字 |
例
次のテーブルを用意します。
Products テーブルid | model | name | class | category | price |
1 | C-XM01 | モーダンチェア | ホーム | チェア | 56000 |
2 | X-XD05 | ラージデスク | オフィス | テーブル | 87000 |
3 | A-DA40 | ラウンドダイニングチェア | ホーム | チェア | 28000 |
4 | O-XX100 | ナチュラルオフィス | オフィス | チェア | 13800 |
5 | R-D400 | ラウンドダイニングテーブル | ホーム | テーブル | 128000 |
6 | R7000 | ウッドキャビネット | オフィス | その他 | 32000 |
7 | B-200 | リネンベッド | ホーム | ベッド | 184500 |
8 | B-250 | ホワイトダブルベッド | ホーム | ベッド | 324850 |
9 | W-80 | ワーキングチェア | オフィス | チェア | 45000 |
10 | EG-10X | エルゴノミクスデスク | オフィス | テーブル | 88500 |
11 | NC-208 | ナチュラルウッドチェア | ホーム | チェア | 128000 |
SQL文 例1
以下のSQL文を実行します。
SELECT * FROM Products WHERE name LIKE '%ダイニング'
解説
name LIKE '%ダイニング'
の条件式によりname列の値に"ダイニング"の文字列を含むレコードを検索結果として取得します。
結果
結果は次の通りです。name列の文字列に"ダイニング"を含むレコードを検索結果として取得しています。
id | model | name | class | category | price |
3 | A-DA40 | ラウンドダイニングチェア | ホーム | チェア | 28000 |
5 | R-D400 | ラウンドダイニングテーブル | ホーム | テーブル | 128000 |
SQL文 例2
以下のSQL文を実行します。
SELECT * FROM ProductsB WHERE model LIKE 'B-2_0%'
結果
結果は次の通りです。model列の文字が"B-2?0"の形式のレコードを検索結果として取得します。
id | model | name | class | category | price |
7 | B-200 | リネンベッド | ホーム | ベッド | 184500 |
8 | B-250 | ホワイトダブルベッド | ホーム | ベッド | 324850 |
補足
条件の末尾に"%"がない、以下のSQLを実行した場合、レコードが検索されない場合があります。
これはフィールドのデータ型による影響です。詳しくは
こちらの記事を参照してください。
SELECT * FROM ProductsB WHERE model LIKE 'B-2_0'
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-01-07
作成日: 2023-10-19