mysql的转义都是通过\来进行的
很明显 第一个存储的是1换行2,第二个存储的是1斜线n2简单来说\ 只对紧跟的后面字符起转义但是第一个查询的时候虽然可能看到的数据是12但是select * from table where a = '12' 是查询不出来的必须select * from table where a = '1\n2' 

解决方案 »

  1.   

    您说的我都明白,可是我不理解MySQL为什么要对'\n'这个字符转义? 直接存储不行么?
      

  2.   

    我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?
      

  3.   

    我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?
    那就是空格,可以多尝试一下
      

  4.   

    我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?转不转义不是由客户来决定的,是MYSQL自己认为 \n 就是 换行。 如果想表达 \n 则用户必须以 \\n的方式来说明。另外还要注意在C语句中 \同样是转义符,这样有时就需要两次转义。
      

  5.   

    我如果不转义,直接传一个'\n'字符给mysql,它会怎么处理呢?转不转义不是由客户来决定的,是MYSQL自己认为 \n 就是 换行。 如果想表达 \n 则用户必须以 \\n的方式来说明。另外还要注意在C语句中 \同样是转义符,这样有时就需要两次转义。
    大概明白您的意思了,也就是说'\n'在mysql中只是一个普通的字符。只有"\\n"才是代表换行的。
    虽然我还是不明白mysql为什么不直接用'\n'一个字符代表换行,而非要用"\\n",不过还是把分都给您了,谢谢!