Difference between revisions of "SELECT names/zh"

From SQLZOO
Jump to navigation Jump to search
(Created page with "<div class="ref_section"> <table class='db_ref'> <tr><th>name</th><th>continent</th></tr> <tr><td>Afghanistan</td><td>Asia</td></tr> <tr><td>Albania</td><td>Europe</td></tr> <...")
 
Line 11: Line 11:
 
</tr>
 
</tr>
 
</table>
 
</table>
 +
name:國家名稱<BR>
 +
continent:洲份<BR>
 
</div>
 
</div>
  
 
==Pattern Matching Strings==
 
==Pattern Matching Strings==
<p>This  tutorial uses the '''LIKE''' operator to check names. We will be using the SELECT command on the table '''world''':</p>
+
<p>此教程使用<code>LIKE</code>運算子來檢查國家名字,我們會在<code>world</code>表格中運用<code>SELECT</code>語句:</p>
  
 
<div class="progress_panel"><div>
 
<div class="progress_panel"><div>
Line 26: Line 28:
  
 
<div class='qu'>
 
<div class='qu'>
You can use <code>WHERE name LIKE 'B%'</code> to find the countries that start with "B".
+
你可以用<code>WHERE name LIKE 'B%'</code>來找出以 B 為開首的國家。<BR>
*The % is a ''wild-card'' it can match any characters
+
%是萬用字元,可以用代表任何字完。
<p class='imper'>Find the country that start with Y</p>
+
<p class='imper'>找出以 Y 為開首的國家。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 43: Line 45:
  
 
<div class='qu'>
 
<div class='qu'>
<p class='imper'>Find the countries that end with '''y'''</p>
+
<p class='imper'>找出以 Y 為結尾的國家。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 57: Line 59:
  
 
<div class='qu'>
 
<div class='qu'>
Luxembourg has an '''x''' - so does one other country. List them both.
+
“Luxembourg 盧森堡”中有一個x字母,還有一個國家的名字中有x。列出這兩個國家。
<p class='imper'>Find the countries that contain the letter '''x'''</p>
+
<p class='imper'>找出所有國家,其名字包括字母x。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 72: Line 74:
  
 
<div class='qu'>
 
<div class='qu'>
Iceland, Switzerland end with '''land''' - but are there others?
+
“Iceland 冰島”和“Switzerland 瑞士”的名字都是以”land”作結束的。還有其他嗎?
<p class='imper'>Find the countries that end with '''land'''</p>
+
<p class='imper'>找出所有國家,其名字以 land 作結尾。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 87: Line 89:
  
 
<div class='qu'>
 
<div class='qu'>
Columbia starts with a '''C''' and ends with '''ia''' - there are two more like this.
+
“Columbia 哥倫比亞”是以 C 作開始,ia 作結尾的。還有兩個國家相同。
<p class='imper'>Find the countries that start with '''C''' and end with '''ia'''</p>
+
<p class='imper'>找出所有國家,其名字以 C 作開始,ia 作結尾。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 102: Line 104:
  
 
<div class='qu'>
 
<div class='qu'>
Greece has a double '''e''' - who has a double '''o'''?
+
“Greece 希臘”中有雙 e 字。哪個國家有雙 o 字呢?
<p class='imper'>Find the country that has '''oo''' in the name</p>
+
<p class='imper'>找出所有國家,其名字包括字母oo。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 117: Line 119:
  
 
<div class='qu'>
 
<div class='qu'>
Bahamas has three '''a''' - who else?
+
“Bahamas 巴哈馬”中有三個 a,還有嗎?
<p class='imper'>Find the countries that have three or more '''a''' in the name</p>
+
<p class='imper'>找出所有國家,其名字包括三個或以上的a。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 131: Line 133:
  
 
<div class='qu'>
 
<div class='qu'>
India and Angola have an '''n''' as the second character. You can use the underscore as a single character wildcard.
+
“India 印度”和”Angola 安哥拉”的第二個字母都是 n。<BR>
 +
你可以用底線符<CODE>_</CODE>當作單一個字母的萬用字元。
 
<source lang='sql'>
 
<source lang='sql'>
 
SELECT name FROM world
 
SELECT name FROM world
Line 137: Line 140:
 
ORDER BY name
 
ORDER BY name
 
</source>
 
</source>
<p class='imper'>Find the countries that have "t" as the second character.</p>
+
<p class='imper'>找出所有國家,其名字以t作第二個字母。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 153: Line 156:
  
 
<div class='qu'>
 
<div class='qu'>
Les'''o'''th'''o''' and M'''o'''ld'''o'''va both have two o characters separated by two other characters.
+
“Lesotho 賴索托”和”Moldova 摩爾多瓦”都有兩個字母 o,被另外兩個字母相隔着。
<p class='imper'>Find the countries that have two "o" characters separated by two others.</p>
+
<p class='imper'>找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 168: Line 171:
  
 
<div class='qu'>
 
<div class='qu'>
Cuba and Togo have four characters names.
+
“Cuba古巴”和”Togo 多哥”都是 4 個字母。
<p class='imper'>Find the countries that have exactly four characters.</p>
+
<p class='imper'>找出所有國家,其名字都是 4 個字母的。</p>
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 182: Line 185:
 
</div>
 
</div>
  
==Harder Questions==
+
==更困難的問題==
 
Well done for getting this far.
 
Well done for getting this far.
  
Line 188: Line 191:
  
 
<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
+
11)“Luxembourg 盧森堡”的首都 capital 都同樣叫“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 204: Line 207:
  
 
<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”。
<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.
+
函數<code>concat</code> 可以用來合拼兩個或以上的字串。
 
</div>
 
</div>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 222: Line 225:
  
 
<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 233: Line 236:
  
 
<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'>找出所有首都和其國家名字,而首都是國家名字的延伸。<BR>
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 City,因它比其國家名字 Mexico 長。<BR>
 +
你不應顯示 Luxembourg,因它的首都和國家名相是相同的。
 
<source lang='sql' class='def'></source>
 
<source lang='sql' class='def'></source>
  
Line 244: Line 248:
  
 
<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函數 [[mid]].
 
<source lang='sql' class='def'></source>
 
<source lang='sql' class='def'></source>
  

Revision as of 16:13, 5 January 2016

namecontinent
AfghanistanAsia
AlbaniaEurope
AlgeriaAfrica
AndorraEurope
AngolaAfrica
....

name:國家名稱
continent:洲份

Pattern Matching Strings

此教程使用LIKE運算子來檢查國家名字,我們會在world表格中運用SELECT語句:

Summary

你可以用WHERE name LIKE 'B%'來找出以 B 為開首的國家。
%是萬用字元,可以用代表任何字完。

找出以 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。列出這兩個國家。

找出所有國家,其名字包括字母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 作結尾的。還有兩個國家相同。

找出所有國家,其名字以 C 作開始,ia 作結尾。

SELECT name FROM world
  WHERE name LIKE 'T%'
SELECT name FROM world
  WHERE name LIKE 'C%ia'

“Greece 希臘”中有雙 e 字。哪個國家有雙 o 字呢?

找出所有國家,其名字包括字母oo。

SELECT name FROM world
  WHERE name LIKE '%ee%'
SELECT name FROM world
  WHERE name LIKE '%oo%'

“Bahamas 巴哈馬”中有三個 a,還有嗎?

找出所有國家,其名字包括三個或以上的a。

SELECT name FROM world
  WHERE name LIKE 'T%'
SELECT name FROM world
  WHERE name LIKE '%a%a%a%'

“India 印度”和”Angola 安哥拉”的第二個字母都是 n。
你可以用底線符_當作單一個字母的萬用字元。

SELECT name FROM world
 WHERE name LIKE '_n%'
ORDER BY name

找出所有國家,其名字以t作第二個字母。

SELECT name FROM world
 WHERE name LIKE '_n%'
ORDER BY name
SELECT name FROM world
 WHERE name LIKE '_t%'
ORDER BY name

“Lesotho 賴索托”和”Moldova 摩爾多瓦”都有兩個字母 o,被另外兩個字母相隔着。

找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。

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.

11)“Luxembourg 盧森堡”的首都 capital 都同樣叫“Luxembourg”。

顯示所有國家名字,其首都和國家名字是相同的。

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

“Mexico 墨西哥”的首都是”Mexico City”。

顯示所有國家名字,其首都和是國家名字加上”City”。

函數concat 可以用來合拼兩個或以上的字串。

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 City,因它比其國家名字 Mexico 長。
你不應顯示 Luxembourg,因它的首都和國家名相是相同的。

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

"Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville".

顯示國家名字,及其延詞,如首都是國家名字的延伸。

你可以使用SQL函數 mid.

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