6

非常に奇妙なMySQLの動作を見つけました:

ウムラウト文字を含む文字列があり、その上でIF式を実行します。何かのようなもの:

IF(length(field) < 10, '', replace(field, "\n", "<BR>"))

それはうまくいきます。

ただし、これをCASEで置き換えると、結果は最初の賞賛に値しない文字にカットされます。

CASE WHEN length(field)<10 THEN '' ELSE replace(field, "\n", "<BR>") END

また、クエリにGROUPBY部分も含まれている場合にのみ発生することに気付きました。

CASEとIFの違いがわかりません。論理的な観点からは、どちらも正確に同じ結果を返すはずです。

これら2つのコマンドの違いがなぜあるのか誰もが知っていますか?

4

1 に答える 1

11

"IF is a single fork, "CASE" can be multiple Use "Case" if you have more than two values optional values, "IF" when you have only two values.

General structure of CASE is:

CASE x
WHEN a THEN ..
WHEN b THEN ..
...
ELSE
END

General structure of IF:

IF (expr)
THEN...
ELSE...
END

So, basically IF is a CASE with only one 'WHEN' statement.

于 2012-12-04T09:50:55.363 に答える