转义符都知道,但可能会理解不到位,或者不深入。今天在工作中,遇到了转义符的问题,记录于此,也供大伙参考。

1.问题概述

爬取到的文本段落,中间有\t \r未处理就存入数据库了(文本截取如下:   '......有效性。\r次要......'  ),导致后来需要刷库,而在刷库过程中,

我用的是:UPDATE china_drug_trials SET public_test_info = REPLACE(public_test_info, CHAR(10), '');

但应该是:UPDATE china_drug_trials SET public_test_info = REPLACE(public_test_info, "\\r", '') ;

2.问题反思

错误出在理解 转义符何时生效上。

  • 转义字符(如\n \r)什么时候生效

  当它会被解释器解释的时候,如print输出时

  • 如果转义字符(如\n \r)在字符串里呢?

  那么它只是代表其特殊意义,没被解释,并不生效。即上文提到的字符串,要替换其中的 \r,用 \\r 就可以了(两个\ 转义 转义符'\')。

  (就好像玫瑰里塞个求婚钻戒,没被女票看到就是没生效的,虽然你知道这枚钻戒是有其特殊意义的)


 示例:

  转义符的深入理解-LMLPHP

  \n 没被解释器解释,并不生效,所以 b 指的是 '123\n456'

  \n 被解释器解释,即print输出时,转义字符生效啦,换了行

 

  • 如果字符串中有已经生效的转义符呢?(如换行或者制表符)

  要操作它,要么直接找\r \n ,要么根据其ASCII码找。即上文提到的字符串,要替换其中已生效的\r,用 \r 或者CHAR(9)。

 示例:

  转义符的深入理解-LMLPHP

  替换字符串 a 中已经生效的转义符,要么直接找\r \n ,要么根据其ASCII码找。

02-15 03:33