Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのlikeの構文、DBMSごとの独自拡張や正規表現でのパターンマッチングについてまとめています。

SQL likeの構文

SQLのlikeの構文は以下の通り。以下の例では、employees(社員)テーブルから、first_name(姓名の名)がAで始まるレコードをワイルドカード文字(%)を使って指定しています。

SELECT 
	* 
FROM 
	employees 
WHERE 
	first_name like 'A%';

実行するとこうなります。first_nameがAで始まるレコードが抽出されています。

+--------+------------+------------+--------------+--------+------------+
| emp_no | birth_date | first_name | last_name    | gender | hire_date  |
+--------+------------+------------+--------------+--------+------------+
|  10006 | 1953-04-20 | Anneke     | Preusig      | F      | 1989-06-02 |
|  10033 | 1956-11-14 | Arif       | Merlo        | M      | 1987-03-18 |
|  10035 | 1953-02-08 | Alain      | Chappelet    | M      | 1988-09-05 |
|  10036 | 1959-08-10 | Adamantios | Portugali    | M      | 1992-01-03 |
|  10039 | 1959-10-01 | Alejandro  | Brender      | M      | 1988-01-19 |
|  10059 | 1953-09-19 | Alejandro  | McAlpine     | F      | 1991-06-26 |
|  10062 | 1961-11-02 | Anoosh     | Peyn         | M      | 1991-08-30 |
|  10091 | 1955-10-04 | Amabile    | Gomatam      | M      | 1992-11-18 |
|  10094 | 1957-05-25 | Arumugam   | Ossenbruggen | F      | 1987-04-18 |
|  10103 | 1953-11-26 | Akemi      | Birch        | M      | 1986-12-02 |
 :
 :

【関連記事】
sql likeを使ったサンプル集 likeは本当に遅いのか? 

DBMSごとのlike構文

Oracleのlike構文

Oracleのlike構文は以下の通り。

SELECT salary 
    FROM employees
    WHERE last_name LIKE 'R%'
    ORDER BY salary;

Oracleには標準SQLのlike以外に、正規表現が使えるREGEXP_LIKEが用意されています。

以下は、REGEXP_LIKEによる、正規表現のパターンマッチングの例です。first_nameの値がStevenまたはStephenのデータを正規表現で条件指定しています。

SELECT first_name, last_name
FROM employees
WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$')
ORDER BY first_name, last_name;

FIRST_NAME           LAST_NAME
-------------------- -------------------------
Steven               King
Steven               Markle
Stephen              Stiles

参考)Oracle公式ドキュメント:パターン一致条件

SQL Serverのlike構文

SQL Serverのlike構文は以下の通り。

-- ASCII pattern matching with char column  
CREATE TABLE t (col1 CHAR(30));  
INSERT INTO t VALUES ('Robert King');  
SELECT *   
FROM t   
WHERE col1 LIKE '% King';   -- returns 1 row  

SQL Serverには、大括弧を使って、「いずれか1文字にマッチする」という指定が可能です。

下記は、CかSいずれか1文字に一致する[]を使ったワイルドカードです。FirstNameの値がCherylまたはSherylにマッチします。

-- Uses AdventureWorks  
  
SELECT BusinessEntityID, FirstName, LastName   
FROM Person.Person   
WHERE FirstName LIKE '[CS]heryl';  
GO  

参考)LIKE (Transact-SQL) – SQL Server | Microsoft Docs

MySQLのlike構文

MySQLのlike構文は以下の通り。_(アンダースコア)は任意の一文字、%(パーセント文字)は任意帳の文字を表します。

mysql> SELECT 'David!' LIKE 'David_';
        -> 1
mysql> SELECT 'David!' LIKE '%D%v%';
        -> 1

なお、照合順序によっては、likeで異なる結果になることがあります。以下の例では、照合順序latin1_german2_ciではマッチしないが、latin1_german2_ciではマッチする例。

mysql> SELECT 'ä' LIKE 'ae' COLLATE latin1_german2_ci;
+-----------------------------------------+
| 'ä' LIKE 'ae' COLLATE latin1_german2_ci |
+-----------------------------------------+
|                                       0 |
+-----------------------------------------+
mysql> SELECT 'ä' = 'ae' COLLATE latin1_german2_ci;
+--------------------------------------+
| 'ä' = 'ae' COLLATE latin1_german2_ci |
+--------------------------------------+
|                                    1 |
+--------------------------------------+

参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.5.1 文字列比較関数

PostgreSQLのlike構文

postgreSQLのlike構文は以下の通り。ワイルドカード文字として、%と_(アンダースコア)が使用可能です。

'abc' LIKE 'abc'    真
'abc' LIKE 'a%'     真
'abc' LIKE '_b_'    真
'abc' LIKE 'c'      偽

また、postgreSQLではPOSIX正規表現によるパターンマッチングが用意されています。

チルダ記号「~」でPOSIXによる正規表現パターンマッチングになります。大文字小文字の区別あり・なしの指定も可能。

'thomas' ~ '.*thomas.*'

参考)PostgreSQL公式:パターンマッチング

まとめ

ポテパンダの一言メモ
  • likeは、ワイルドカード文字でパターンマッチを行う演算子
  • %は任意長の文字列、_(アンダースコア)は任意の一文字を表す
  • DBMSによっては、独自の拡張や正規表現に対応しているものもあり。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。