mysql中單雙引號的特殊使用以及mysql常見的轉義字符
mysql中使用基本的DML類型的sql語句, “”和‘’ 是default string label symbols. 但是在實際情況中,經常出現下面的情況:
SELECT book_id FROM pd WHERE isbn='9787542739810' and book_name='"HBase實戰"與"Storm實戰"';
這種情況下,book_name對應的字符串是沒有問題的,sql語句沒有語法問題。但是看下面一條語句:
SELECT book_id FROM pd WHERE isbn='9787542739810' and book_name='HBase企業應用開發實戰';
執行該語句:
報異常:You have an error in your SQL syntax;
到這,大家可能會說,你把’HBase企業應用開發實戰’ 中外圍的兩個單引號換成雙引號不就搞定了。可現實往往是按照墨菲定律向著最壞的情況發展。很多情況下,我們都不知道傳入的增、刪、改、查的字符串中,是否含有”,’,或者是兩者同時含有,所以不能簡單的遇到單引號替換成雙引號,遇到雙引號替換成單引號。這就需要用到sql的轉義字符了。
\ ‘
一個單引號(“ ‘”)符。
\ ”
一個雙引號(“ “”)符。
\\
一個反斜線(“\”)符。
</div>
下面是轉義用的java代碼,僅供參考:
String str = "askdjf;lskdjf'asdf\"asdfasdf"; System.out.println(str); if (str.indexOf("'") >= 0) str = str.replaceAll("'", "\\\\'"); if (str.indexOf("\"") >= 0) str = str.replaceAll("\"", "\\\\\""); System.out.println(str);
mysql轉義字符:
\0
一個ASCII 0 (NUL)字符。
\n
一個新行符。
\t
一個定位符。
\r
一個回車符。
\b
一個退格符。
\ ‘
一個單引號(“ ‘”)符。
\ ”
一個雙引號(“ “”)符。
\\
一個反斜線(“\”)符。
\%
一個“%”符。它用于在正文中搜索“%”的文字實例,否則這里“%”將解釋為一個通配符。
\_
一個“_”符。它用于在正文中搜索“_”的文字實例,否則這里“_”將解釋為一個通配符。
注意,如果你在某些正文環境中使用“\%”或“\%_”,這些將返回字符串“\%”和“\_”而不是“%”和“_”。
</div>
有幾種方法在一個字符串內包括引號:
一個字符串內用“ ‘”加引號的“ ‘”可以被寫作為“ ‘ ‘”。
一個字符串內用“ “”加引號的“ “”可以被寫作為“ ” “”。
你可以把一個轉義字符(“\”)放在引號前面。
一個字符串內用“ “”加引號的“ ‘”不需要特殊對待而且不必被重復或轉義。同理,一個字符串內用“ ‘”加引號的與“ “”也不需要特殊對待。
</div> </div>
來自: http://www.adintellig.com/special-use-of-single-and-double-quotes-in-mysql/