SELECT names/ja

From SQLZOO
Revision as of 10:54, 18 April 2018 by Kobashi.kaz (talk | contribs)
Jump to: navigation, search
Language:Project:Language policy English  • 日本語 • 中文
namecontinent
AfghanistanAsia
AlbaniaEurope
AlgeriaAfrica
AndorraEurope
AngolaAfrica
....

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 '____'

より難しい問題

Well done for getting this far.

The next questions are optional and only for students who are finding the basic questions too easy.

The capital of Luxembourg is Luxembourg. Show all the countries where the capital is the same as the name of the country

Find the country where the name is the capital city.

SELECT name, capital, continent
  FROM world
 WHERE name LIKE '%x%'
SELECT name FROM world
 WHERE name = capital

The capital of Mexico is Mexico City. Show all the countries where the capital has the country together with the word "City".

Find the country where the capital is the country plus "City".

The function concat is short for concatenate - you can use it to combine two or more strings.

SELECT name, concat(name, 'town')
  FROM world
 WHERE name LIKE '%ina%'
SELECT name FROM world
 WHERE capital = concat(name, ' City')

Find the capital and the name where the capital includes the name of the country.

SELECT capital, name FROM world
 WHERE capital LIKE concat('%', name, '%')

Find the capital and the name where the capital is an extension of name of the country.

You should include Mexico City as it is longer than Mexico. You should not include Luxembourg as the capital is the same as the country.

SELECT capital,name FROM world
 WHERE capital LIKE concat(name, '_%')

For Monaco-Ville the name is Monaco and the extension is -Ville.

Show the name and the extension where the capital is an extension of name of the country.

You can use the SQL function REPLACE.

select name,mid(capital,length(name)+1) ext
from world
where capital like concat(name,'_%')

Play Find the Duplicates