为什么双冒号在 case 语句中不起作用

why double colon will not work in case statement

我想用'::'(这个字符)标记主机名以标记为云,并将所有内容归为'not cloud'。

我尝试使用 like 运算符,它不起作用,我的结果将所有主机名标记为不云

select a.department, count(host_name),
(CASE
   WHEN host_name like '%::%' THEN 'Cloud'
   ELSE 'Not cloud'
END) as cloud_instance
from 
table a

预期输出: 如果我的主机名中有这个表达式 '::' 那么它应该显示为 cloud.

您当前的查询没有意义,因为它调用了 COUNT() 函数,一个 table 级函数,以及单独的行级列。我怀疑这就是你想要做的:

SELECT
    a.department,
    COUNT(a.host_name) AS dept_cnt,
    COUNT(CASE WHEN a.host_name LIKE '%::%' THEN 1 END) AS cloud_cnt,
    COUNT(CASE WHEN a.host_name NOT LIKE '%::%' THEN 1 END) AS no_cloud_cnt
FROM yourTable a
GROUP BY
    a.department;

这里我们按部门汇总,每个部门的总计数、云计算和非云计算。