0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[SQL] 特殊なデータ取得

Posted at

昨日に引き続きSQLの記事です。
データ取得の続きについて書きます。

#特定の文字や数値を含むデータの取得
以下のテーブルを例に挙げて考える。

テーブル名:menue

number name price category
1 ショートケーキ 200 デザート
2 チョコケーキ 250 デザート
3 コーヒー 120 ドリンク
4 チョコマフィン 150
5 コーヒーゼリー 150 デザート

##LIKE演算子とワイルドカード
###LIKE演算子
「ある文字を含むデータ」を取得したい場合に用いる。
「~のような」という意味を持つ。

「指定したカラムが〇〇を含むレコード」という条件となる。

###ワイルドカード
「どんな文字列にも一致することを指す記号」のこと
「%」を用いる。

以下の表に条件と記述法を表す。

|条件|記述|
|:---:|:---:|:---:|
|全一致|"%文字列%"|
|前方一致|"文字列%"|
|後方一致|"%文字列"|

SELECT カラム名
FROM テーブル名
WHERE カラム名 LIKE 文字列;

【全一致の場合】

sample1
SELECT *
FROM menue
WHERE name LIKE "%ケーキ%";
number name price category
1 ショートケーキ 200 デザート
2 チョコケーキ 250 デザート

【前方一致の場合】

sample2
SELECT *
FROM menue
WHERE name LIKE "チョコ%";
number name price category
2 チョコケーキ 250 デザート
4 チョコマフィン 150

【後方一致】

sample3
SELECT *
FROM menue
WHERE name LIKE "%ケーキ";
number name price category
1 ショートケーキ 200 デザート
2 チョコケーキ 250 デザート

##条件を満たさないデータを取得
###NOT演算子
「〇〇を含まないデータ」や「〇〇に一致しないデータ」のような条件で
データを取得したい場合に用いる。「否定」を意味する。

SELECT カラム名
FROM テーブル名
WHERE NOT カラム名 LIKE 文字列; 
sample3
SELECT *
FROM menue
WHERE NOT name LIKE "%ケーキ%";
number name price category
3 コーヒー 120 ドリンク
4 チョコマフィン 150
5 コーヒーゼリー 150 デザート

また、条件に比較演算子と数値を指定することも可能。

SELECT カラム名
FROM テーブル名
WHERE NOT カラム名 比較演算子 数値; 
sample4
SELECT *
FROM menue
WHERE NOT price > 200; 

このときの条件は、「priceが200より大きい (満たす)」を否定しているため
「priceが200より小さい(200以下)」という条件になる。
ちょっとややこしいですが...汗

number name price category
1 ショートケーキ 200 デザート
3 コーヒー 120 ドリンク
4 チョコマフィン 150
5 コーヒーゼリー 150 デザート

##カラムに何も保存されていないデータの取得
###NULL
「中身がなにか分からない状態」のこと
データベースでは「何のデータも保存されていない場合」に用いる。

###IS NULL
「指定したカラムがNULLであるデータ」を取得する場合に用いる。
「~がNULLである」という意味を持つ。

SELECT カラム名
FROM テーブル名
WHERE カラム名 IS NULL;
sample5
SELECT * FROM menue
WHERE category IS NULL;
number name price category
4 チョコマフィン 150

###NOT IS NULL
「指定したカラムがNULLでないデータ」を取得する場合に用いる。
「~がNULLでない」という意味を持つ。

SELECT カラム名 
FROM テーブル名
WHERE カラム名 NOT IS NULL;
sample6
SELECT * FROM menue
WHERE category NOT IS NULL;
number name price category
1 ショートケーキ 200 デザート
2 チョコケーキ 250 デザート
3 コーヒー 120 ドリンク
5 コーヒーゼリー 150 デザート
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?