Difference between revisions of "SELECT names/ja"

From SQLZOO
Jump to: navigation, search
 
(5 intermediate revisions by 2 users not shown)
Line 181: Line 181:
  
 
==より難しい問題==
 
==より難しい問題==
Well done for getting this far.
+
ここまでよく頑張りました。
  
The next questions are optional and only for students who are finding the basic questions too easy.
+
以下は選択問題で基本問題が簡単すぎると感じた学生専用です。
  
 
<div class='qu'>
 
<div class='qu'>
The capital of '''Luxembourg''' is '''Luxembourg'''. Show all the countries where the capital is the same as the name of the country
+
ルクセンブルグ '''Luxembourg''' の首都は '''Luxembourg''' です。首都と国名が同じ国名をすべて表示する。
<p class='imper'>Find the country where the name is the capital city.</p>
+
<p class='imper'>首都と国名が同じ国を見つける</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 202: Line 202:
  
 
<div class='qu'>
 
<div class='qu'>
The capital of '''Mexico''' is '''Mexico City'''. Show all the countries where the capital has the country together with the word "City".
+
'''Mexico''' の首都は '''Mexico City''' です。首都が国名に続けて "City" という国をすべて表示する。
<p class='imper'>Find the country where the capital is the country plus "City".</p>
+
<p class='imper'>国名 + "City" が首都の国を見つける。</p>
<div class=hint title='The concat function'>
+
<div class=hint title='concat 関数(結合関数)'>
The function concat is short for concatenate - you can use it to combine two or more strings.
+
concat 関数は結合(concatenate)を短縮した関数名です。この関数で2個以上の文字列を結合できます。
 
</div>
 
</div>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 220: Line 220:
  
 
<div class='qu'>
 
<div class='qu'>
<p class='imper'>Find the capital and the name where the capital includes the name of the country.</p>
+
<p class='imper'>国名を首都名に含む国の、首都と国名を表示する</p>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
</source>
 
</source>
Line 231: Line 231:
  
 
<div class='qu'>
 
<div class='qu'>
<p class='imper'>Find the capital and the name where the capital is an extension of name of the country.</p>
+
<p class='imper'>国名を拡張した首都名を持つ国の、首都と国名を見つける</p>
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.
+
検索結果には'''Mexico''' よりも長くなった'''Mexico City'''を含めること。'''Luxembourg ''' は首都と国名が同じなので含めないこと。
 
<source lang='sql' class='def'></source>
 
<source lang='sql' class='def'></source>
  
Line 242: Line 242:
  
 
<div class='qu'>
 
<div class='qu'>
For '''Monaco-Ville''' the name is '''Monaco''' and the extension is '''-Ville'''.
+
'''Monaco-Ville''' の国名は '''Monaco''' で、拡張部分は '''-Ville''' です。
<p class='imper'>Show the name and the extension where the capital is an extension of name of the country.</p>
+
<p class='imper'>国名と首都の拡張部分を見つける</p>
You can use the SQL function [[REPLACE]].
+
SQL の関数 <code>MID</code>と[[LENGTH]] を使う。
 
<source lang='sql' class='def'></source>
 
<source lang='sql' class='def'></source>
  
Line 254: Line 254:
 
</div>
 
</div>
  
Play [https://sqlzoo.net/brain/bt.htm Find the Duplicates]
+
プレイしよう [https://sqlzoo.net/brain/bt.htm 重複発見ゲーム Find Duplicates game]

Latest revision as of 17:22, 20 April 2018

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

より難しい問題

ここまでよく頑張りました。

以下は選択問題で基本問題が簡単すぎると感じた学生専用です。

ルクセンブルグ 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 の関数 MIDLENGTH を使う。

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

プレイしよう 重複発見ゲーム Find Duplicates game