CASE和IF之間的區別,我發現很奇怪的MySQL的行爲:什麼是在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字母上」的含義是什麼?什麼是「unlaut letter」?你使用的是什麼版本的MySQL?如果你的意思是檢查字段是否有10 *個字符*(而不是10個字節),你應該使用[CHAR_LENGTH](https://dev.mysql.com/doc/refman/5.6/en/string-functions.html# function_char-length)而不是LENGTH。 – Schwern