首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mysql中CASE和IF有什么区别

在mysql中CASE和IF有什么区别
EN

Stack Overflow用户
提问于 2012-12-04 17:42:43
回答 1查看 14.7K关注 0票数 6

我发现了非常奇怪的MySQL行为:

我有一个带有元音字母的字符串,我在上面运行了一些IF表达式。类似于:

代码语言:javascript
运行
复制
IF(length(field) < 10, '', replace(field, "\n", "<BR>"))

它工作得很好。

但是,如果我将这个if替换为CASE,那么结果将在第一个unlaut字母上被剪切!

代码语言:javascript
运行
复制
CASE WHEN length(field)<10 THEN '' ELSE replace(field, "\n", "<BR>") END

此外,我注意到,只有当查询中还存在GROUP BY part时,才会发生这种情况。

我不能理解CASE和IF之间的区别--从逻辑的角度来看,两者应该返回完全相同的结果。

有人知道为什么这两个命令有区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-04 17:50:55

如果是一个单一的分支,"CASE“可以是多个使用"Case”如果你有两个以上的值可选的值," if“当你只有两个值。

的通用结构是:

代码语言:javascript
运行
复制
CASE x
WHEN a THEN ..
WHEN b THEN ..
...
ELSE
END

IF:的一般结构

代码语言:javascript
运行
复制
IF (expr)
THEN...
ELSE...
END

所以,基本上IF是一个只有一个“WHEN”语句的CASE。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13699908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档