SQLZoo刷题系列 1

模糊检索

定义

 模糊检索是指搜索系统自动按照用户输入关键词的同义词进行模糊检索,从而得出较多的检索结果。与之相反的是“精准搜索”。

like关键字

 模糊查询中 like 是模糊查询的关键字,%是通配符,代表多个任意匹配,比如 ‘%米饭’ 就是搜索前半段是任意字符,结尾是米饭的记录,可以将 % 放在条件字段的任意位置。
_ 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。


习题

下面是SQLZoo中的关于模糊检索的习题,网址为:SELECT from WORLD Tutorial

namecontinentareapopulationgdp
AfghanistanAsia6522302550010020343000000
AlbaniaEurope28748283174112960000000
AlgeriaAfrica238174137100000188681000000
AndorraEurope468781153712000000
AngolaAfrica124670020609294100990000000

In this tutorial you will use the SELECT command on the table world:

题目一

You can use WHERE name LIKE ‘B%’ to find the countries that start with “B”.
The % is a wild-card it can match any characters
Find the country that start with Y

SELECT name FROM world
  WHERE name LIKE 'Y%'

题目二

Find the countries that end with y

SELECT name FROM world
  WHERE name LIKE '%y'

题目三

Luxembourg has an x - so does one other country. List them both.
Find the countries that contain the letter x

SELECT name FROM world
  WHERE name LIKE '%x%'

题目四

Iceland, Switzerland end with land - but are there others?
Find the countries that end with land

SELECT name FROM world
  WHERE name LIKE '%land'

题目五

Columbia starts with a C and ends with ia - there are two more like this.
Find the countries that start with C and end with ia

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

题目六

Greece has a double e - who has a double o?
Find the country that has oo in the name

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

题目七

Bahamas has three a - who else?
Find the countries that have three or more a in the name

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

题目八

India and Angola have an n as the second character. You can use the underscore as a single character wildcard.
SELECT name FROM world
WHERE name LIKE '_n%'
ORDER BY name
Find the countries that have “t” as the second character.

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

题目九

Lesotho and Moldova both have two o characters separated by two other characters.
Find the countries that have two “o” characters separated by two others.

SELECT name FROM world
 WHERE name LIKE '%o__o%'

题目十

Cuba and Togo have four characters names.
Find the countries that have exactly four characters.

SELECT name FROM world
 WHERE name LIKE '____'

题目十一

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
  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”.

SELECT name
 FROM world
 WHERE capital like concat(name, ' City')

注:
 这里的concat函数的作用是将一个或多个字符串参数连接成一个字符串,语法是CONCAT(string1,string2, ... );

题目十三

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,'%') and capital > 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, REPLACE(capital, name, '') as extension 
FROM world 
WHERE capital LIKE concat('%',name,'%') AND capital > name;

注:
REPLACE函数的格式如下:REPLACE(对象字符串,替换前的字符串,替换后的字符串)

在此例中,针对capital字符串,将其中的name替换为空字符,剩下了就是其后缀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值