条件に合うデータを抽出する②
💡前回の記事では、比較演算子を使用して、条件に当てはまるデータの抽出を学びました。今回は前回の学びを活かしつつ、条件を複数にして抽出する論理演算子を学んでいきましょう。
AND
ANDは二つの条件が全て一致するデータを検索します。
SELECT *
From Customers
WHERE CustomerName < 'B'
AND Country = 'Germany';
CustomersテーブルでCustomerName < B且つCountry = Germanyのデータを検索します。
OR
ORは二つの条件中一つでも一致するデータを検索します。
SELECT *
From Customers
WHERE CustomerName < 'B'
OR Country = 'Germany';
CustomersテーブルでCustomerName < BとCountry = Germanyのデータを検索します。
LIKE
🚨 LIKE演算時は一般的にはCase-insensitiveです。すなわち、大文字と小文字を区別しません。なので、大小を区別するためには正規表現式を使用しないといけません。
WHERE節中で文字列の一部を比較する部分検索機能です。
文字列を比較演算子を使用するみたいに正確に一致しなくても使用できます。
SELECT Column1, Column2
FROM TableName
WHERE ColumnName
LIKE PATTERN
WildCard(%)
%は0文字からその以上を意味します。
SELECT *
FROM Customers
WHERE Country
LIKE 'Br%';
CustomersテーブルでCountryがBrから始まる全てのデータを検索します。
SELECT *
FROM Customers
WHERE Country
LIKE '%r%';
CustomersテーブルでCountryでrが一つでも含まれている全てのデータを検索します。
SELECT *
FROM Customers
WHERE Country
LIKE 'Brazil';
SELECT *
FROM Customers
WHERE Country = 'Brazil';
上記の2つは同様の内容で、違う書き方です。
🤔 一つの値を指定して抽出する際にはLIKEより=を使用する方が性能的は良いです。 今は、データの量が少ないので、速度の差を感じられないかもしれませんが、実際のデータを扱う場合は何時間または何日もかかるかもしれません。
WildCard(_)
特定の文字を指定しない面では%と同じ機能をするが、_は文字の数を指定できます。
_は一文字WildCardだと言います。
SELECT *
FROM Customers
WHERE Country
LIKE 'B%';
上記の場合BrazilとBelgiumが全て検索されます。
SELECT *
FROM Customers
WHERE Country
LIKE 'B_____';
Bで始まる5文字なのでBrazilだけ検索されます。
🤔 もし、文字列中に%と_が含まれていてこの値を検索する時にはどうすれば良いでしょうか?

SELECT *
FROM Customers
WHERE discount
LIKE '5%';
上記のクエリ実行した場合はAnna, Bob, Catherine全て検索される。
WildCardが含まれてる特定な値を検索するためには\(Escape)を使用しないといけません。
SELECT *
FROM Customers
WHERE discount
LIKE '50\%';
上記のクエリを実行する場合はAnnaだけ検索されます。

SELECT *
FROM Customers
WHERE discount
LIKE '__\%';
上記の場合AnnaとBobが検索されます。

🔥 Escapeの場合はDBによって違うので注意してください。
Example
aから始まる全ての値が検索されます。
WHERE Column1
LIKE 'a%';
aで終わる全ての値が検索されます。
WHERE Column1
LIKE '%a';
aがある全ての値が検索されます。
WHERE Column1
LIKE '%a%';
二つ目の文字にaがある全ての値が検索されます。
WHERE Column1
LIKE '_a%';
aから初めてoで終わる全ての値が検索されます。
WHERE Column1
LIKE 'a%o';
💯ここまでの学習お疲れ様でした!少しでも取り組んだ自分を褒めて、次回も前向きに取り組んでいきましょう!