【发布时间】:2012-11-21 21:38:59
【问题描述】:
我发现 MySQL 的行为很奇怪:
我有一个带有元音变音字母的字符串,我在上面运行了一些 IF 表达式。 比如:
IF(length(field) < 10, '', replace(field, "\n", "<BR>"))
它工作正常。
但是,如果我用 CASE 替换它,那么结果会在第一个 unlaut 字母上被截断!
CASE WHEN length(field)<10 THEN '' ELSE replace(field, "\n", "<BR>") END
另外,我注意到只有在查询中还有 GROUP BY 部分时才会发生这种情况。
我不明白 CASE 和 IF 之间有什么区别 - 从逻辑角度来看,两者都应该返回完全相同的结果。
有人知道为什么这两个命令有区别吗?
【问题讨论】:
-
“结果在第一个 unlaut 字母上被剪切”是什么意思?什么是“不劳而获的信”?您使用的是什么版本的 MySQL?如果您要检查字段是否有 10 个 字符(而不是 10 个字节),您应该使用 CHAR_LENGTH 而不是 LENGTH。
标签: mysql