欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-05 18:17:06
...
刚开始学习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%'  

结果– 与预期并不相符合
SQLZOO入门题笔记1--replace 和case when

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

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

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

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