2013-10-31 97 views
3

我想在一個CASE使用REGEXP WHEN背景是這樣的:MYSQL REGEXP在 「CASE WHEN」

SELECT 
CASE title 
    WHEN REGEXP '^(The Matrix|Riddick|American Pie)$' THEN (
    'Movie' 
    ) ELSE (
    'FOOO' 
    ) 
END 
FROM `movies` 

,但這是不可能的。你可以看到我想在這裏匹配不同的字符串。

問候, 菲利克斯

回答

4

這的確是可能的,正確的語法。 REGEXP需要左側和右側操作數,所以使用CASE的其他語法,其中全部表達式放置在WHEN之後。

SELECT 
    CASE 
    WHEN `title` REGEXP '^(The Matrix|Riddick|American Pie)$' THEN 'Movie' 
    ELSE 'FOOO' 
    END AS column_alias 
FROM `movies` 

但是,如果你是不是在正則表達式中使用任何可變因素,這很可能是遠高於做確切在索引列匹配效率較低。換句話說,你不需要用你給出的例子進行正則表達式。

SELECT 
    CASE 
    WHEN `title` IN ('The Matrix', 'Riddick') THEN 'Movie' 
    ELSE 'FOOO' 
    END AS your_column_alias 
FROM `movies`