SQLzoo练习题:显示国家名字中的延伸词

本文通过一个具体实例,展示了如何使用SQL的REPLACE、CONCAT及MID函数来解决实际问题,特别是涉及字符串操作的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

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

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

你能够使用SQL函數 REPLACE 或 MID.

解题思路:

(1)REPLACE函数的用法。

REPLACE函数:用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

语法:REPLACE( 'st1' , 'str2' , 'str3' )

参数:

'str1':带搜索的字符串表达式。str1可以是字符数据或二进制数据。

‘str2’:在str1中查找的字符串表达式。str2可以是字符数据或二进制数据。

'str3':在str1中将匹配到的str2替换的字符串表达式。str3可以是字符数据或二进制数据。

返回类型:

如果str(1、2、3)是支持的字符数据类型之一,则返回字符数据。如果str(1、2、3)是支持的binary数据类型之一,则返回二进制数据。

示例:str1='Hello World'    str2='o'    str3='p'

REPLACE( str1, str2, str3 ) = ‘Hellp Wprld’

 

 (2)CONCAT()函数的用法。

CONCAT()函数:用于将两个字符串连接起来,形成一个单一的字符串。

示例:SELECT CONCAT( 'FIRST ' , 'SECOND') = FIRST SECOND

 

(3)MID()函数的用法。

MID()函数:用于从文本字段中提取字符。

语法:SELECT MID(column_name, start[, length] ) FROM table_name

参数:

column_name:要提取字符的字段。

start:规定开始位置(起始值是1)。

length:可选参数。要返回的字符数。如果省略,则MID()函数返回剩余文本。

示例:

我们拥有下面这个 "Persons" 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

现在,我们希望从 "City" 列中提取前 3 个字符。

我们使用如下 SQL 语句:

SELECT MID(City,1,3) as SmallCity FROM Persons

结果集类似这样:

SmallCity
Lon
New
Bei

 

回到最初的题目,解题思路如下:

一、筛选什么?

【1】国家名字【2】衍生词

故要筛选两列column,分别是name以及REPALCE(capital, name, '')(这句话起到把capital中name字符串去掉的作用)

二、筛选条件?

capital的名字是【 name + '延伸词' 】的组合,故条件为

WHERE capital LIKE CONCAT ( name, '%_' )     (延伸词至少包含一个字符,故使用 '%_' )

综上所述,题解答案为:

SELECT name, REPLACE (capital, name, '') AS extend
FROM world
WHERE capital LIKE CONCAT ( name, '%_' ) ;

正确答案显示为:

nameextend
Andorrala Vella
GuatemalaCity
KuwaitCity
MexicoCity
Monaco-Ville
PanamaCity
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值