为什么双冒号在 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;
这里我们按部门汇总,每个部门的总计数、云计算和非云计算。
我想用'::'
(这个字符)标记主机名以标记为云,并将所有内容归为'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;
这里我们按部门汇总,每个部门的总计数、云计算和非云计算。