mysql到底是怎么处理转义字符的?

wjb_yd 2014-04-02 11:39:54
下面两行代码的区别在哪儿?
mysql_query(&mysql_, "insert into table values(1, 1\n2)");
mysql_query(&mysql_, "insert into table values(1, 1\\n2)");
MYSQL到底是如何存储这两个字符串的呢?
...全文
1133 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjb_yd 2014-04-06
  • 打赏
  • 举报
回复
引用 7 楼 ACMAIN_CHM 的回复:
[quote=引用 5 楼 wjb_yd 的回复:] [quote=引用 3 楼 ACMAIN_CHM 的回复:] \n 对MYSQL来说是换行。
我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?[/quote]转不转义不是由客户来决定的,是MYSQL自己认为 \n 就是 换行。 如果想表达 \n 则用户必须以 \\n的方式来说明。 另外还要注意在C语句中 \同样是转义符,这样有时就需要两次转义。[/quote] 大概明白您的意思了,也就是说'\n'在mysql中只是一个普通的字符。只有"\\n"才是代表换行的。 虽然我还是不明白mysql为什么不直接用'\n'一个字符代表换行,而非要用"\\n",不过还是把分都给您了,谢谢!
ACMAIN_CHM 2014-04-03
  • 打赏
  • 举报
回复
引用 5 楼 wjb_yd 的回复:
[quote=引用 3 楼 ACMAIN_CHM 的回复:] \n 对MYSQL来说是换行。
我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?[/quote]转不转义不是由客户来决定的,是MYSQL自己认为 \n 就是 换行。 如果想表达 \n 则用户必须以 \\n的方式来说明。 另外还要注意在C语句中 \同样是转义符,这样有时就需要两次转义。
benluobo 2014-04-03
  • 打赏
  • 举报
回复
引用 5 楼 wjb_yd 的回复:
[quote=引用 3 楼 ACMAIN_CHM 的回复:] \n 对MYSQL来说是换行。
我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?[/quote] 那就是空格,可以多尝试一下
wjb_yd 2014-04-03
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
\n 对MYSQL来说是换行。
我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?
码无边 2014-04-03
  • 打赏
  • 举报
回复
一个字符串用双引号“ "”来引用的,该字符串中的单引号“'”不需要特殊对待而且不必被重复或转义。 同理, 一个字符串用单引号“'”来引用的,该字符串中的双引号“ "”不需要特殊对待而且不必被重复或转义。
benluobo 2014-04-02
  • 打赏
  • 举报
回复
mysql的转义都是通过\来进行的 很明显 第一个存储的是1换行2,第二个存储的是1斜线n2 简单来说\ 只对紧跟的后面字符起转义 但是第一个查询的时候虽然可能看到的数据是12 但是select * from table where a = '12' 是查询不出来的 必须select * from table where a = '1\n2'
ACMAIN_CHM 2014-04-02
  • 打赏
  • 举报
回复
\n 对MYSQL来说是换行。
wjb_yd 2014-04-02
  • 打赏
  • 举报
回复
引用 1 楼 benluobobo 的回复:
mysql的转义都是通过\来进行的 很明显 第一个存储的是1换行2,第二个存储的是1斜线n2 简单来说\ 只对紧跟的后面字符起转义 但是第一个查询的时候虽然可能看到的数据是12 但是select * from table where a = '12' 是查询不出来的 必须select * from table where a = '1\n2'
您说的我都明白,可是我不理解MySQL为什么要对'\n'这个字符转义? 直接存储不行么?

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧