案例表达“缺少关键字”错误

时间:2017-08-28 12:55:54

标签: sql oracle

我有下表:

City     | Inhabitants | Magnitude
---------+-------------+--------
Zuerich  |  100000     | city
London   | 5000000     | city
New York | 5000000     | city

我想读出一个选择查询,如果有500万居民,它必须像这样给出“大城市”:

City     | Inhabitants | Magnitude
---------+-------------+---------
Zuerich  |  100000     | city
London   | 5000000     | bigcity
New York | 5000000     | bigcity

我已经尝试过这个案例陈述,但它不起作用

SELECT
    CASE magnitude
       WHEN inhabitants LIKE '%5000000%'
          THEN 'bigcity'
       ELSE NULL
    END AS magnitude

我总是收到“缺少关键字”错误。

如何正确编写此查询?

2 个答案:

答案 0 :(得分:2)

为什么使用LIKE?这是一个数字吗?可以是050000000吗?还是500000005?如果不是LIKE是不必要的,应该使用正常比较。

此外,ELSE null不正确,因为您似乎希望替代方案为city

SELECT t.city,
       t.inhabitants,
       CASE WHEN t.inhabitants = '5000000' THEN 'bigcity'
                                           ELSE t.magnitude
       END as magnitude
FROM YourTable t

如果我的假设是错误的,请将您与LIKE的比较替换为您使用它。

答案 1 :(得分:0)

您的CASE语法有点不对劲。它应该是

case when <condition> then <value> else <default> end

所以对于你的情况应该是

select case 
 when inhabitants like '%5000000%' then 'bigcity'
else 'City' end as Magnitude