SQL:是否可以根据'like'函数的结果'分组'?

som*_*one 10 sql oracle grouping group-by sql-like

我正在使用Oracle SQL,我希望将一些不同的行分组,这些行与"函数结果"相似.详细说明一个例子:


我们假设我有一个表MESA,其中一列是一个巨大的字符串.我正在计算与特定模式匹配的行数:

SELECT m.str, count(*)
FROM MESA m
WHERE m.str LIKE '%FRUIT%'
AND (m.str LIKE '%APPLE%' OR m.str LIKE '%ORANGE%')
Run Code Online (Sandbox Code Playgroud)

所以我们假设这个查询的结果是:

FRUIT..afsafafasfa ... RED_APPLE 20

FRUIT..afsafafasfa ... YELLOW_APPLE 12

FRUIT..afsafafasfa ... GREEN_APPLE 3

FRUIT..afsafafasfa ... PURPLE_ORANGE 4

FRUIT..afsafafasfa ... RED_ORANGE 45

但我希望我的结果是:

苹果35

橙色49


这可能吗?如果是这样,怎么会这样?:)

评论和代码片段非常感谢.

PS:当然查询和结果比上面的例子更复杂.我只是为了简单起见而编写它.

干杯..

Dav*_*kle 12

当然:

WITH Fruits AS (
    SELECT 
        CASE 
           WHEN m.str LIKE '%APPLE%' THEN 'Apple'
           WHEN m.str LIKE '%ORANGE%' THEN 'Orange' 
        END AS FruitType           
    FROM MESA m
    WHERE m.str LIKE '%FRUIT%')
SELECT FruitType, COUNT(*) 
FROM Fruits
WHERE FruitType IN ('Apple', 'Orange')
GROUP BY FruitType;
Run Code Online (Sandbox Code Playgroud)