MySQL CASE语句和REGEXP

8

我想使用一个带有 REGEXP 的 CASE 语句。目前我正在做类似于这样的事情:

SELECT NAME,
 CASE INFO
   WHEN 'not cool' THEN 'Not Cool'
   WHEN 'very cool' THEN 'Cool'
 ELSE INFO
 END AS INFO
FROM INFO_TABLE

有没有办法在初始语句中使用 REGEXP 使条件作为正则表达式呢?理论上这就是我想要的,但以下方式无效:

SELECT NAME,    
 CASE INFO REGEXP
   WHEN 'not cool' THEN 'Not Cool'
   WHEN 'very cool' THEN 'Cool'
 ELSE INFO
 END AS INFO
FROM INFO_TABLE

我希望“不酷”和“非常酷”成为正则表达式。希望这足够清楚。

2个回答

20

试一下这个

select name,
case
  when info regexp 'not cool' then 'Not Cool'
  when info regexp 'very cool' then 'Cool'  
else 
  info
end 
  as info
from INFO_TABLE;

太好了,我猜是因为在case之后加了额外的“INFO”,所以我真的搞糊涂了!+1 - bjo

0

我不知道是否有正则表达式,但是你可以使用LIKE与通配符。

通配符%表示任意数量的字符。通配符_表示任意单个字符。

例如:

SELECT email FROM people WHERE email LIKE '%harvard.edu'

MySQL 自 4.x 版本开始就拥有了 REGEXP 功能:http://dev.mysql.com/doc/refman/4.1/en/regexp.html - OMG Ponies
哦,谢谢。我看到Oracle在10g版本中加入了正则表达式 :-) - ktm5124

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接