我在 MySQL 中有一個字串,當我選擇使用 like 時,它??什么也不回傳。經過一番調查,我發現了 MySQL 的一個奇怪行為。
select a,a=a,a like a from (
select '123' as a union all
select '\\"'
)x
結果:
| 一個 | 一個=一個 | 一個像一個 |
|---|---|---|
| 123 | 1 | 1 |
| \" | 1 | 0 |
http://sqlfiddle.com/#!9/9eecb/313965
我認為a like a應該總是回傳 1 (期望a=null)
uj5u.com熱心網友回復:
在 MySQL 中的運算式背景關系中LIKE,反斜杠保留了特殊含義,即轉義它后面的字符。這是必需的,例如,如果我們想在LIKE運算式中包含文字下劃線。
贊賞以下是正確的:
'"' LIKE '\"'
這是真的,因為LIKE運算式中的反斜杠是字面量,用于轉義雙引號。以下兩個是相同的:
'"' LIKE '\\"'
'"' LIKE '"'
下面的雙反斜杠LIKE被解釋為對雙引號的雙重轉義。
您嘗試做的正確版本是:
'\\"' LIKE '\\\\"'
這里的 LHS 是一個文字反斜杠,后跟雙引號。RHS 需要四個反斜杠作為文字反斜杠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/521042.html
標籤:mysql
下一篇:如何將字串引數轉換為列名
