2013-10-31 73 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`