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 5 years have passed since last update.

【SQL】LIKE / 関数

Last updated at Posted at 2020-04-13
1 / 11

この資料は弊社後輩に説明するために扱った&口頭説明の補助的資料です。
せっかく纏めたので記念に残しておくかだけのものです、悪しからず。


昨日の答え合わせ

  1. 国名に 'United' を含む国の国名を特定する。

WHERE - LIKE

文字列の検索を行う。
LIKE だけだと、完全に一致した結果しか出力されない。

「部分一致」や「前方一致」「後方一致」するような検索がしたい!
-> そんなときに「ワイルドカード」なるものが使える。


ワイルドカード

何にでも代用が効く文字のこと。
トランプでいうとこのジョーカーみたいな。
SQL ではワイルドカード文字は2種類ある。

文字 意味
_ 任意の1文字
% 0文字以上の任意の文字列

使用例

「キューバ」を検索したいけど C のあとのスペルに自信ないな...って時。

SELECT *
FROM world
WHERE name LIKE 'C_ba'

「A」から始まる国名を検索したい時。

SELECT *
FROM world
WHERE name LIKE 'A%'

末尾が「Y」で終わる国名を検索したい時。

SELECT *
FROM world
WHERE name LIKE '%Y'

とりあえずどこの位置にあるか分からないけど「RI」を含んでいる国名を検索したい時。

SELECT *
FROM world
WHERE name LIKE '%RI%'

シングルクォーテーション / ダブルクォーテーション

「どっちも一緒じゃね?🤔」に対する答えとしては
-> 扱う DBMS によって差がある

だいたいの標準 SQL の仕様では
'' : 文字列定数として扱う
"" : カラム名として扱う

MySQL という DBMS では
'' : 文字列定数として扱う
"" : 文字列定数として扱う
`` : カラム名として扱う


ついでにエスケープ処理

例えば、ある値の中に「I'm」とか「Taro's」とか「100%」などの言葉が入っているものを調べたい...!というとき。
'% は単体だと囲っている文字やワイルドカードとして認識されてしまう。
そこで、'% を「ただの記号だよー意味ないよー」という印をつけてあげる必要がある。
その「ただの記号だよー意味ないよー」という印をつけてあげることを エスケープ処理 という。

  • ' なら 'I''m Tsumako' のように ' を重ねる
  • % なら '100%%' のように % を重ねる
  • 'I\'m Tsumako''100\%' のようにエスケープしたい文字の前に \ をつける

AND / OR

AND (∧) : どちらにも当てはまる
OR (∨) : どちらか一方当てはまれる

+-*/ に計算の優先順位があるように、NOT > AND > OR の順で優先される。
意図通りに処理させたい場合は () を用いる。


XOR

排他的論理和

(もはや数学の授業やんけ...)
2つのうち1つだけ正しければ正しい、というもの。
両方合ってる、両方間違っているものはダメになる。
数学的例でみると...

  • A は真、B は真 -> 偽
  • A は真、B は偽 -> 真
  • A は偽、B は真 -> 真
  • A は偽、B は偽 -> 偽

になる。


関数 - ROUND(数値関数)

端数を丸めてくれる関数。
ROUND(n [,m ]) というように使う。
n には端数を丸めたいものを入れ、m には小数点以下何桁で丸めるかを整数で指定する。
m は省略も可能で、省略すると 0 桁で丸める。
m にはマイナスの値も指定できる。

SELECT name, ROUND(population, -4)
FROM world
WHERE population >= 200000000

数値だけじゃなくて日付に対しても使える。


関数 - LENGTH

文字列の文字数を求めてくれる関数。
使用する DBMS によって LEN だったり CHAR_LENGTH だったり違うので注意。
今回は LENGTH で OK!

SELECT name, LENGTH(name)
FROM world
WHERE LENGTH(name) > 20
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?