3

我想在这样的上下文中使用 REGEXP:

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

但这是不可能的。如您所见,我想在这里匹配不同的字符串。

问候,菲利克斯

4

1 回答 1

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`
于 2013-10-31T14:03:38.247 回答