SELECT names/ja
Language: | English • 日本語 • 中文 |
---|
name | continent |
---|---|
Afghanistan | Asia |
Albania | Europe |
Algeria | Africa |
Andorra | Europe |
Angola | Africa |
.... |
name:国名
continent:大陸
文字列のパターンマッチ
このチュートリアルでは LIKE 演算子を用いて国名をチェックする。SELECT コマンドを world テーブルに使うとよい:
WHERE name LIKE 'B%'
というコードで、"B" から始まる国名を検索できる。
- % 記号はワイルドカード といい、どんな文字列(複数の文字。0文字でも可)にもマッチする。
Y で始まる国名を見つける
SELECT name FROM world
WHERE name LIKE 'F%'
SELECT name FROM world
WHERE name LIKE 'Y%'
y で終わる国名を見つける
SELECT name FROM world
WHERE name LIKE 'T%'
SELECT name FROM world
WHERE name LIKE '%y'
ルクセンブルグ Luxembourg には x が一文字あり、同様の国はこの他にもある。どちらもリストアップする。
x を含む国名を見つける
SELECT name FROM world
WHERE name LIKE 'T%'
SELECT name FROM world
WHERE name LIKE '%x%'
アイスランド Iceland とスイス Switzerland は land で終わっている。他にもあるか?
land で終わる国名を検索する。
SELECT name FROM world
WHERE name LIKE 'T%'
SELECT name FROM world
WHERE name LIKE '%land'
コロンビア Columbia は C で始まり、ia で終わる。このような国は2つ以上ある。
C で始まり ia で終わる国を見つける
SELECT name FROM world
WHERE name LIKE 'T%'
SELECT name FROM world
WHERE name LIKE 'C%ia'
ギリシャ Greece は e を続けて2つ含む。o を続けて2つ含む国は?
oo を名前に含む国を見つける
SELECT name FROM world
WHERE name LIKE '%ee%'
SELECT name FROM world
WHERE name LIKE '%oo%'
バハマ Bahamas にはa が3つある。他にあるか?
a を3つ以上含む国名を見つける
SELECT name FROM world
WHERE name LIKE 'T%'
SELECT name FROM world
WHERE name LIKE '%a%a%a%'
インド India と アンゴラ Angola は n が2文字目にある。ある一文字を表すワイルドカードにはアンダースコア_を使う。
SELECT name FROM world
WHERE name LIKE '_n%'
ORDER BY name
"t" を第2文字目に持つ国名を見つける
SELECT name FROM world
WHERE name LIKE '_n%'
ORDER BY name
SELECT name FROM world
WHERE name LIKE '_t%'
ORDER BY name
レソト Lesotho と モルドバ Moldova はどちらも2つの o が 2つの他の文字で隔てられている。
複数の"o"が他の2文字で隔てられている国名を見つける
SELECT name FROM world
WHERE name LIKE '_n%'
SELECT name FROM world
WHERE name LIKE '%o__o%'
キューバ Cuba と トーゴ Togo の国名は4文字。
ちょうど4文字の国名を見つける
SELECT name FROM world
WHERE name LIKE 'Cu%'
SELECT name FROM world
WHERE name LIKE '____'
より難しい問題
ここまでよく頑張りました。
以下は選択問題で基本問題が簡単すぎると感じた学生専用です。
ルクセンブルグ Luxembourg の首都は Luxembourg です。首都と国名が同じ国名をすべて表示する。
首都と国名が同じ国を見つける
SELECT name, capital, continent
FROM world
WHERE name LIKE '%x%'
SELECT name FROM world
WHERE name = capital
Mexico の首都は Mexico City です。首都が国名に続けて "City" という国をすべて表示する。
国名 + "City" が首都の国を見つける。
concat 関数は結合(concatenate)を短縮した関数名です。この関数で2個以上の文字列を結合できます。
SELECT name, concat(name, 'town')
FROM world
WHERE name LIKE '%ina%'
SELECT name FROM world
WHERE capital = concat(name, ' City')
国名を首都名に含む国の、首都と国名を表示する
SELECT capital, name FROM world
WHERE capital LIKE concat('%', name, '%')
国名を拡張した首都名を持つ国の、首都と国名を見つける
検索結果にはMexico よりも長くなったMexico Cityを含めること。Luxembourg は首都と国名が同じなので含めないこと。
SELECT capital,name FROM world
WHERE capital LIKE concat(name, '_%')
Monaco-Ville の国名は Monaco で、拡張部分は -Ville です。
国名と首都の拡張部分を見つける
SQL の関数 MID
とLENGTH を使う。
select name,mid(capital,length(name)+1) ext
from world
where capital like concat(name,'_%')
プレイしよう 重複発見ゲーム Find Duplicates game