mysql中单双引号的特殊使用 以及mysql常见的转移字符
2015-08-06 09:10
561 查看
mysql中单双引号使用
mysql中使用基本的DML类型的sql语句,“”和‘’是default string label symbols. 但是在实际情况中,经常出现下面的情况:
Sql代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/2748f23ce86cfa6e5cd8a4386b112196.png)
SELECT book_id FROM pd WHERE isbn='9787542739810' and book_name='"祛魅"与"返魅"';
这种情况下,book_name对应的字符串是没有问题的,sql语句没有语法问题。但是看下面一条语句:
Sql代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/2748f23ce86cfa6e5cd8a4386b112196.png)
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代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/2748f23ce86cfa6e5cd8a4386b112196.png)
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
一个退格符。
\ '
一个单引号(“ '”)符。
\ "
一个双引号(“ "”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。
有几种方法在一个字符串内包括引号:
一个字符串内用“ '”加引号的“ '”可以被写作为“ ' '”。
一个字符串内用“ "”加引号的“ "”可以被写作为“ " "”。
你可以把一个转义字符(“\”)放在引号前面。
一个字符串内用“ "”加引号的“ '”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“ '”加引号的与“ "”也不需要特殊对待。
mysql中使用基本的DML类型的sql语句,“”和‘’是default string label symbols. 但是在实际情况中,经常出现下面的情况:
Sql代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/2748f23ce86cfa6e5cd8a4386b112196.png)
SELECT book_id FROM pd WHERE isbn='9787542739810' and book_name='"祛魅"与"返魅"';
这种情况下,book_name对应的字符串是没有问题的,sql语句没有语法问题。但是看下面一条语句:
Sql代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/2748f23ce86cfa6e5cd8a4386b112196.png)
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代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/2748f23ce86cfa6e5cd8a4386b112196.png)
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
一个退格符。
\ '
一个单引号(“ '”)符。
\ "
一个双引号(“ "”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。
有几种方法在一个字符串内包括引号:
一个字符串内用“ '”加引号的“ '”可以被写作为“ ' '”。
一个字符串内用“ "”加引号的“ "”可以被写作为“ " "”。
你可以把一个转义字符(“\”)放在引号前面。
一个字符串内用“ "”加引号的“ '”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“ '”加引号的与“ "”也不需要特殊对待。
相关文章推荐
- mysql基本+深入操作集
- mysql不重启的情况下修改参数变量
- MySql存储过程与函数
- 利用oneproxy部署mysql数据库的读写分离
- SQLAlchemy基础篇(连接mysql数据库)
- 论MySQL何时使用索引,何时不使用索引
- MySql存储过程与函数详解
- MYSQL更新优化实录
- MySql函数大全
- Mysql中把latin1字符集的数据库改为GBK
- MySQL的数据关系处理流程
- 解决办法:mysql_connect()不支持请检查mysql模块是否正确加载
- Ubuntu Navicat for MySQL安装以及破解方案
- 完全卸载MySQL的方法
- dos启动mysql时发生系统错误5拒绝访问的问题
- mysql 的官网在哪下载源码包呀
- 连接不上mysqlworkbench问题解决方法
- mysql处理高并发数据,防止数据超读
- mysqldump导出部分数据的方法: 加入--where参数
- Mysql 优化