我发现了非常奇怪的MySQL行为:
我有一个带有元音字母的字符串,我在上面运行了一些IF表达式。类似于:
IF(length(field) < 10, '', replace(field, "\n", "<BR>"))它工作得很好。
但是,如果我将这个if替换为CASE,那么结果将在第一个unlaut字母上被剪切!
CASE WHEN length(field)<10 THEN '' ELSE replace(field, "\n", "<BR>") END此外,我注意到,只有当查询中还存在GROUP BY part时,才会发生这种情况。
我不能理解CASE和IF之间的区别--从逻辑的角度来看,两者应该返回完全相同的结果。
有人知道为什么这两个命令有区别吗?
发布于 2012-12-04 17:50:55
如果是一个单一的分支,"CASE“可以是多个使用"Case”如果你有两个以上的值可选的值," if“当你只有两个值。
的通用结构是:
CASE x
WHEN a THEN ..
WHEN b THEN ..
...
ELSE
ENDIF:的一般结构
IF (expr)
THEN...
ELSE...
END所以,基本上IF是一个只有一个“WHEN”语句的CASE。
https://stackoverflow.com/questions/13699908
复制相似问题