演算子比較演算子
比較演算子について
unknown
比較演算子 | 内容 | |
---|---|---|
= | WHERE フィールド名 = '値' | レコードが値と等しい |
<>、!= | WHERE フィールド名 <> '値' | レコードが値と等しくない |
<= | WHERE フィールド名 <= '値' | レコードが値以下 |
< | WHERE フィールド名 < '値' | レコードが値より小さい |
>= | WHERE フィールド名 >= '値' | レコードが値以上 |
> | WHERE フィールド名 > '値' | レコードが値よりも大きい |
<=> | WHERE フィールド名 <=> '値' | 等しい(NULL同士でも成立) |
IS NULL | WHERE フィールド名 IS NULL | レコードがNULL値である |
IS NOT NULL | WHERE フィールド名 IS NOT NULL | レコードがNULL値ではない |
BETWEEN a AND b | WHERE フィールド名 BETWEEN '値1' AND '値2' | レコードが値1以上値2以下 |
IN(a,b,...) | WHERE フィールド名 IN ('値1'[, '値2', ...]) | レコードがいずれかの値 |
ISNULL(a) | ISNULL(a) | NULL判定、aがNULLならTRUE |
COALESCE(a, b, ... ) | COALESCE(a, b, ... ) | リスト中の最初のNULLでない値 |
INTERVQAL(n,n1,n2,...) | INTERVQAL(n,n1,n2,...) | n<n1なら0、n<n2なら1、・・・を返す |
等しい
unknown
=
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.12 sec) # Sexフィールドが'f'と等しいレーコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Sex = 'f'; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 4 rows in set (0.07 sec)
等しくない
unknown
<>, !=
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # 例1: Sexフィールドが'f'でないレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Sex != 'f'; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 6 | 太郎 | 田中 | m | 22 | +--------+-----------+----------+------+------+ 3 rows in set (0.00 sec) # 例2: Sexフィールドが'f'でないレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Sex <> 'f'; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 6 | 太郎 | 田中 | m | 22 | +--------+-----------+----------+------+------+ 3 rows in set (0.00 sec)
以下
unknown
<=
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # Ageフィールドが 30 以下のレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Age <= 30; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | +--------+-----------+----------+------+------+ 5 rows in set (0.00 sec)
より小さい
unknown
<
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.01 sec) # Ageフィールドが 30 未満のレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Age < 30; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | +--------+-----------+----------+------+------+ 4 rows in set (0.00 sec)
以上
unknown
>=
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # Ageフィールドが 30 以上のレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Age >= 30; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 3 rows in set (0.00 sec)
より大きい
unknown
>
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 45 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # Ageフィールドが 30 より大きいレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Age > 30; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 3 | 一郎 | 鈴木 | m | 45 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 2 rows in set (0.00 sec)
等しい(NULL同士でも成立)
unknown
<=>
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | NULL | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | NULL | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) #### AgeフィールドがNULLであるレコードを検索 # 比較演算子「=」では、NULL不等価 mysql> SELECT * FROM tbl_Customer WHERE Age = NULL; Enter Empty set (0.00 sec) # 比較演算子「<=>」では、NULL等価 mysql> SELECT * FROM tbl_Customer WHERE Age <=> NULL; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 3 | 一郎 | 鈴木 | m | NULL | | 5 | 愛 | 森永 | f | NULL | +--------+-----------+----------+------+------+ 2 rows in set (0.00 sec)
NULL
unknown
IS NULL
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | NULL | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | NULL | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # Ageフィールドが NULL であるレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Age IS NULL; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 3 | 一郎 | 鈴木 | m | NULL | | 5 | 愛 | 森永 | f | NULL | +--------+-----------+----------+------+------+ 2 rows in set (0.00 sec)
NULLでない
unknown
IS NOT NULL
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | NULL | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | NULL | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.08 sec) # Ageフィールドが NULL でないレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Age IS NOT NULL; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 4 | 萌子 | 山口 | f | 18 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 5 rows in set (0.00 sec)
範囲検索、aとbの間にあればTRUE
unknown
BETWEEN a AND b
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 39 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.01 sec) # Ageフィールドが 30~39 の間のレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE Age BETWEEN 30 AND 39; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 39 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 3 rows in set (0.00 sec)
リスト中に値があるかどうか
unknown
IN(a, b, ... )
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | 30 | | 3 | 一郎 | 鈴木 | m | 39 | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # LastNameフィールドに、'佐藤'、'山口'のいずれかを含むレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE LastName IN('佐藤','山口'); Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 4 | 萌子 | 山口 | f | 18 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 2 rows in set (0.00 sec)
NULL判定、aがNULLならTRUE
unknown
ISNULL(a)
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | f | 21 | | 2 | 太郎 | 田中 | m | NULL | | 3 | 一郎 | 鈴木 | m | NULL | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | f | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # Ageフィールドが NULL であるレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE ISNULL(Age); Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 2 | 太郎 | 田中 | m | NULL | | 3 | 一郎 | 鈴木 | m | NULL | +--------+-----------+----------+------+------+ 2 rows in set (0.06 sec)
リスト中の最初のNULLでない値
unknown
COALESCE(a, b, ... )
mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | NULL | 21 | | 2 | 太郎 | 田中 | m | NULL | | 3 | 一郎 | 鈴木 | m | NULL | | 4 | 萌子 | 山口 | f | 18 | | 5 | 愛 | 森永 | NULL | 21 | | 6 | 太郎 | 田中 | m | 22 | | 7 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # Sexフィールド、AgeフィールドでNULLが最初に見つかったレコードを検索 mysql> SELECT * FROM tbl_Customer WHERE COALESCE(Sex, AGE); Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | 1 | 花子 | 鈴木 | NULL | 21 | | 5 | 愛 | 森永 | NULL | 21 | +--------+-----------+----------+------+------+ 2 rows in set (0.00 sec)
nn2なら1、・・・を返す
unknown
INTERVQAL(n,n1,n2,...)