SQLZOO入门题笔记1--replace 和case when

本文记录了在SQLZOO中遇到的关于REPLACE函数和CASE WHEN语句的问题。在使用REPLACE替换字符串时,发现结果与预期不符,可能原因包括字段对应要求或不同SQL环境的影响。同时,解释了CASE WHEN语句的基本用法,用于根据条件进行不同的数据处理,并给出案例说明其可以嵌套使用,作为学习备忘。

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

刚开始学习SQL,找的经典有答案练习题SQLZOO,很多还是不明白,也有很多感觉会忘记的,先写下,已备后期检验留查。


                             一. 关于REPLACE
 例1: SQLZOO:SELECT from WORLD 
 T11:Show the name - but substitute Australasia for Oceania - for countries beginning with N.
  SELECT name,continent,REPLACE(continent,'oceania','australasia')
  FROM world
  WHERE name LIKE 'N%'  

结果– 与预期并不相符合
结果

例2:SQLZOO:SELECT names/zh
T15:"Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville",顯示國家名字,及其延伸詞,如首都是國家名字的延伸。
SELECT name,REPLACE(capital,name,'')
FROM world
WHERE capital LIKE CONMCAT(name,'_%')

结果
这里写图片描述

W3Cschool:SQL REPLACE():函数定义:replace(original-string,search-string,replace-string)
实例:把数据库表article中的所有title字段里的w3cschool字符串替换成hello。

update `article` set title=replace(title,'w3cschool','hello');

由以上3例可得:
1、可能是REPLACE直接中第1,2参数必须是相对应的字段,但这与例3不相符合,可能是例3,REPLACE前的语句有影响
2、可能是在不同的SQL运行环境中产生的结果会不一样
以上,待后期再查证

                          二.CASE WHEN THEN ELSE END

 上面REPLACE第一例  SQLZOO:SELECT from WORLD 
 T11:Show the name - but substitute Australasia for Oceania - for countries beginning with N.

答案为:

    SELECT name,continent,
    CASE WHEN continent='oceania' THEN 'australasia'
        ELSE continent END
    FROM world
    WHERE name LIKE 'n%'

用个人语言翻译:
CASE WHEN … THEN … ELSE ……. END
当。。。。。。。 就。。。其他的。。。就这样吧

实例2:SQLZOO:SELECT from WORLD
T13:Put the continents right…

Oceania becomes Australasia
Countries in Eurasia and Turkey go to Europe/Asia
Caribbean islands starting with 'B' go to North America, other Caribbean islands go to South America

Show the name, the original continent and the new continent of all countries.

SELECT name,continent,
CASE 
    WHEN continent='oceania' THEN 'Australasia'
    WHEN continent IN ('eurasia','turkey') THEN 'Europe/Asia'
    WHEN continent='caribbean'
        CASE
            WHEN name LIKE 'B%' THEN 'North America'
            ELSE 'South America'
        END
    ELSE continent
END
AS newcontinent     
FROM world

以上案例仅用来说明还可以嵌套使用,以上笔记用以备忘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值