MYSQL REGEXP在“CASE WHEN”中

时间:2013-10-31 13:58:27

标签: mysql regex case

我想在CASE WHEN上下文中使用REGEXP:

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

但这是不可能的。我想在这里匹配不同的字符串。

此致 菲利克斯

1 个答案:

答案 0 :(得分: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`