mysql中單雙引號的特殊使用以及mysql常見的轉義字符

jopen 8年前發布 | 8K 次閱讀 MySQL SQL 軟件架構

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/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!