【发布时间】:2013-09-13 18:54:56
【问题描述】:
我有一个这样的查询(它不能按预期工作)
SELECT
(CASE
WHEN str LIKE '%some_string%' THEN 's'
WHEN str LIKE '%some_string2%' THEN 's2'
END) as str,
COUNT(*) as num FROM Table WHERE
str LIKE '%some_string%' or
str LIKE '%some_string2%'
group by str
并且表格包含类似的东西
| str |
|------------------------------- |
| "some_string_a;" |
| "some_string_b; some_else" |
| "some_string_c; some_else" |
| "some_else; some_string2a" |
| "some_string_c; some_string2b" |
如何获得如下结果?
| str | num |
|---------------|--------|
| s | 4 |
| s2 | 2 |
我目前低估了,因为当第 1、2、3 和 5 行实际上包含两者时,它们被计为“some_string%”(因此也被计为“s”)。
【问题讨论】:
-
我不认为你可以做到这一点而不使 非常 变得复杂 - 让值返回列而不是行是否可以接受?除非您绝对需要这样做,否则对于所需的工作量来说,这可能是一个很好的结果。
-
@rio 你能检查我的答案吗??
-
你必须首先规范你的数据。
-
@eouw0o83hf 我认为这是奥尔登的方法,对吗?
-
@Rio 是的。如果这是一个可以接受的回应,那会让你更轻松。