显示截断行

时间:2017-07-19 19:29:28

标签: mysql

所以我有一个存储数据的表,我相信其中包含隐藏的字符。

当我从表中选择*时;我得到以下数据

+----------+----------------------+-----------+-----------------+---------------------+--------------------+------+-----------+
| account  | ip                   | proxy     | proxyip         | customer            | SalesStaffInitials | LCR  | realproxy |
+----------+----------------------+-----------+-----------------+---------------------+--------------------+------+-----------+
 | XXX.XXX.XXX.XXX | XXXXXX Network Inc. |  XX                | NULL | proxyXXX
+----------+----------------------+-----------+-----------------+---------------------+--------------------+------+-----------+

正如您所看到的那样,首先显示的是“proxyip”列,即使它是第4列。

我尝试使用trim()来摆脱领先的空白区域。我也尝试了以下查询来试图摆脱隐藏的字符:

更新客户SET realproxy = TRIM(REPLACE(代理,CONVERT(char(160)使用utf8),''));

此外,如果在将文件导出为CSV时有帮助,前3列在1行,然后其余列在另一行。

以前有人见过这样的事吗?如果我需要包含其他内容,请告诉我,谢谢。

edit1:我只是在每一列上做了一个选择,它唯一看起来的列就是代理。

1 个答案:

答案 0 :(得分:0)

听起来像是在proxyip列的值的开头有回车符或换行符。

要找出该字符是什么,我会使用HEX函数来获取值SELECT HEX(proxyip) FROM ...的十六进制表示

换行符是x'0A',回车符是x'0D'。或者你可能还有其他一些控制角色。 (例如制表符是x'09'

如果要删除所有这些字符,

 SELECT     REPLACE(REPLACE(proxyip,'\n',''),'\r','')  AS new_proxyip
      , HEX(REPLACE(REPLACE(proxyip,'\n',''),'\r','')) AS hex_new_proxyip
   FROM ...

REPLACE函数也可以在UPDATE语句中使用...

 UPDATE ...
    SET mycol = REPLACE(REPLACE( mycol ,'\n',''),'\r','')