mysql中单双引号的特殊使用 以及mysql常见的转移字符

mysql中单双引号使用  
mysql中使用基本的DML类型的sql语句,“”和‘’是default string label symbols. 但是在实际情况中,经常出现下面的情况: 
Sql代码   收藏代码
  1. SELECT book_id FROM pd WHERE isbn='9787542739810' and book_name='"祛魅"与"返魅"';  

这种情况下,book_name对应的字符串是没有问题的,sql语句没有语法问题。但是看下面一条语句: 
Sql代码   收藏代码
  1. SELECT book_id FROM pd WHERE isbn='9787542739810' and book_name='LET'S GO!马小波罗';  

执行该语句: 
引用
报异常:You have an error in your SQL syntax;


到这,大家可能会说,你把'LET'S GO!马小波罗' 中外围的两个单引号换成双引号不就搞定了。可现实往往是按照墨菲定律向着最坏的情况发展。很多情况下,我们都不知道传入的增、删、改、查的字符串中,是否含有",',或者是两者同时含有,所以不能简单的遇到单引号替换成双引号,遇到双引号替换成单引号。这就需要用 到sql的转义字符 了。 
引用
\ '   
一个单引号(“ '”)符。   
\ "   
一个双引号(“ "”)符。   
\\   
一个反斜线(“\”)符。   

【关于其他转义字符的信息,在下面的一节中做全面介绍】 


下面是转义用的java代码,仅供参考: 
Java代码   收藏代码
  1. String str = "askdjf;lskdjf'asdf\"asdfasdf";  
  2.         System.out.println(str);  
  3.         if (str.indexOf("'") >= 0)  
  4.             str = str.replaceAll("'""\\\\'");  
  5.         if (str.indexOf("\"") >= 0)  
  6.             str = str.replaceAll("\"""\\\\\"");  
  7.         System.out.println(str);  



mysql转义字符  
  • \0   
    一个ASCII   0   (NUL)字符。   
    \n   
    一个新行符。   
    \t   
    一个定位符。   
    \r   
    一个回车符。   
    \b   
    一个退格符。   
    \ '   
    一个单引号(“ '”)符。   
    \ "   
    一个双引号(“ "”)符。   
    \\   
    一个反斜线(“\”)符。   
    \%   
    一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。   
    \_   
    一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。   
    注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。   

    有几种方法在一个字符串内包括引号:   

    一个字符串内用“ '”加引号的“ '”可以被写作为“ ' '”。   
    一个字符串内用“ "”加引号的“ "”可以被写作为“ " "”。   
    你可以把一个转义字符(“\”)放在引号前面。   
    一个字符串内用“ "”加引号的“ '”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“ '”加引号的与“ "”也不需要特殊对待。  

你可能感兴趣的:(数据库-mysql)