我想在CASE WHEN上下文中使用REGEXP:
SELECT
CASE title
WHEN REGEXP '^(The Matrix|Riddick|American Pie)$' THEN (
'Movie'
) ELSE (
'FOOO'
)
END
FROM `movies`
但这是不可能的。我想在这里匹配不同的字符串。
此致 菲利克斯
答案 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`