phpMyAdmin | MySQL | SQL演算子の利用方法
phpMyAdminは,PHPで構築されたフリーソフトウェアツールであり,MySQLの管理操作を意図されている.MySQLやMariaDBについて,幅広い操作範囲がサポートされており,当該ツールによりdatabase, tables, colums, relations, indexes, permissionsなどの操作を実行できる.
MySQLとは,世界で最も人気のあるopen-sourceのrelational database management system (RDBMS)である.NetflixやAirbnb,Uberなどアクセスの多いアプリケーションに利用されている.
phpMyAdminを利用してデータベースのテーブルに格納しているデータを検索する際,SQL演算子を利用する.本記事ではSQL演算子の利用方法を説明する.
- 1. phpMyAdminにおける検索時に利用するSQL演算子
- 2. SQL演算子の利用方法
- 3. REGEXPにおける"*", “+", “$"有無の比較
- 4. 参照
phpMyAdminにおける検索時に利用するSQL演算子
phpMyAdminを開くと,以下画面が表示されるので,"検索"をクリックする.
以下画面に遷移するので,"演算子"タイトル下の選択肢をクリックすると,SQL演算子の一覧が表示される.今回はこれらのSQL演算子を説明する.
SQL演算子の利用方法
上記にて利用可能となるSQL演算子の一覧が選択可能となるので,各演算子を以下に説明する.
LIKE
そのまま利用
以下は,abcである文字列が対象となる.
WHERE column LIKE 'abc'
“%" (パーセント)を利用
以下は,abcから始まるすべての文字列が対象となる.
WHERE column LIKE 'abc%'
例) abc, abcd, abc123
以下は,abcで終わるすべての文字列が対象となる.
WHERE column LIKE '%abc'
例) abc, xxabc, 1abc
“_" (アンダーバー)を利用
以下は,abcから始まる4桁の文字列が対象となる.
WHERE column LIKE 'abc_'
例) abcd, abc1
LIKE %…%
以下は,abcが含まれるすべての文字列が対象となる.
WHERE column LIKE '%abc%'
例) abc, xabcdef, abcd, xxabc
NOT LIKE
以下は,abcから始まる文字列を除くパターンが対象となる.
WHERE column NOT LIKE 'abc%'
以下は,abcで終わる文字列を除くパターンが対象となる.
WHERE column NOT LIKE '%abc'
NOT LIKE %…%
以下は,abcが含まれる文字列を除くパターンが対象となる.
WHERE column NOT LIKE '%abc%'
“=" (イコール)
以下は,abcである値が対象となる.
WHERE column = 'abc'
“!="
以下は,abc以外の値が対象となる.
WHERE column != 'abc'
REGEXP
REGEXPとはRegular Expressionsの略であり,機能はLIKEに類似している.なお,"^"は後ろには付けないので,REGEXP 'abc^’といった使い方はしない.
以下は,abcから始まるパターンが対象となる.
WHERE column REGEXP '^abc'
例) abc, abc123, abcd, abc-xy
以下は,最初の1文字がA-Zの大文字のアルファベットで,その後が数字であるパターンが対象となる.
WHERE column REGEXP '^[A-Z][0-9]+'
例) Z111, Y87463,
以下は,最初の2文字以上が数字であるパターンが対象となる.
WHERE column REGEXP '^[0-9]{2,}'
例) 12abc, 24, 4857hjg
以下は,最初の1文字がA-Zの大文字のアルファベットで,その後が数字(空も含む)であるパターンが対象となる.
WHERE column REGEXP '^[A-Z][0-9]*'
例) A, A12, B897, A0, A123B, B9XZ
以下は,A-Zから始まりその後2桁の小文字であるパターンが対象となる.
WHERE column REGEXP '^[A-Z][a-z]{2}'
例) Cat, Dog, Abc
補足 (“+"(プラス)と"*"(アスタリスク))
REGEXPでは,"+"(プラス)や"*"(アスタリスク)が利用される."+"が入る場合,空は含まれず,"*"が入る場合,空は含まれる.以下は対象例となる.
"*"の対象例)
a*: "", "a", "aaa", etc
[0-9]*: "", "1", "123", "000", etc
abc*: "ab", "abc", "aabbc", etc
"+"の対象例)
a+: "a", "aaa", etc (""は対象外)
[0-9]*: "1", "123", "000", etc (""は対象外)
abc*: "ab", "abc", "aabbc", etc (""は対象外)
REGEXP ^…$
“REGEXP ^…$"では,"$"(ダラーサイン)が利用される."…"の条件を満たした後,すぐに終了という意味を持つ.以下は,A-Zから始まりその後が数字(空も含む)となり完了するパターンとなる."$"が最後に含まれているので,数字のあとにアルファベットなどが追加されることはない.
WHERE column REGEXP '^[A-Z][0-9]*$'
例) G11, G
以下は,A-Zから始まりその後が数字(空は含まない)であるパターンが対象となる..
WHERE column REGEXP '^[A-Z][0-9]+$'
例) G11, K5
NOT REGEXP
REGEXPとはRegular Expressionsの略であり,機能はLIKEに類似している.そのため,NOT REGEXPはNOT LIKEと類似している.
以下は,abcから始まるパターンが対象とならない.
WHERE column NOT REGEXP '^abc'
例) xtabc, 123
以下は,最初の1文字がA-Zの大文字のアルファベットで,その後が数字であるパターンが対象となる.
WHERE column NOT REGEXP '^[A-Z][0-9]+'
例) 87Y, 463
= "
以下は,空の文字列が対象となる.
WHERE column = ''
!= "
以下は,空の文字列以外が対象となる.
WHERE column != ''
IN (…)
特定の複数の値が対象となる.以下は,’abc’, 'def’, 'ghi’が対象となる.
WHERE column IN ('abc', 'def', 'ghi')
NOT IN (…)
特定の複数の値以外が対象となる.以下は,’abc’, 'def’, 'ghi’以外が対象となる.
WHERE column NOT IN ('abc', 'def', 'ghi')
BETWEEN
特定の範囲の値が対象となる.以下は,1~5の値が対象となる.
WHERE column BETWEEN 1 and 5
NOT BETWEEN
特定の範囲以外の値が対象となる.以下は,2~7以外の値が対象となる.
WHERE column NOT BETWEEN 2 and 7
IS NULL
以下は,NULLが対象となる.
WHERE column IS NULL
IS NOT NULL
以下は,NULL以外が対象となる.
WHERE column IS NOT NULL
REGEXPにおける"*", “+", “$"有無の比較
REGEXPを利用する際,"*", “+", “$"を使うことができる."+"が入る場合,空は含まれず,"*"が入る場合,空は含まれる."$"が最後に含まれると,最後の文字が指定され,追加文字の追加が許可されない.
パターン | 最後の文字の指定 (“$"の有無) | Digitsの要求 (“+" vs “*") | 追加文字の可否 (“$"の有無) |
^[A-Z][0-9]*$ | あり | 0以上のdigits | 否 |
^[A-Z][0-9]+$ | あり | 1以上のdigits | 否 |
^[A-Z][0-9]* | なし | 0以上のdigits | 可 |
^[A-Z][0-9]+ | なし | 1以上のdigits | 可 |
“^[A-Z][0-9]*$"の場合
- “^[A-Z]": 最初の文字が大文字となる
- “[0-9]*": 次が0以上の桁数 (空も含む)となる
- “$": 数字もしくは空のあと,完了となる
“^[A-Z][0-9]+$"の場合
- “^[A-Z]": 最初の文字が大文字となる
- “[0-9]+": 次が0以上の桁数 (空は含まれない)となる
- “$": 数字のあと,完了となる
“^[A-Z][0-9]*"の場合
- “^[A-Z]": 最初の文字が大文字となる
- “[0-9]*": 次が0以上の桁数 (空も含む)となる
- “$"なし: 数字もしくは空のあと,追加の文字や数字の挿入がl許可される
“^[A-Z][0-9]+"の場合
- “^[A-Z]": 最初の文字が大文字となる
- “[0-9]+": 次が0以上の桁数 (空は含まれない)となる
- “$"なし: 数字もしくは空のあと,追加の文字や数字の挿入がl許可される
参照
MySQL | Chapter 14 Functions and Operators
以上