2017-07-19 77 views
-2

所以我有一个表,它存储的数据,我相信有隐藏的字符在它。MYSQL表显示切断行

当我做了select * from table;我得到以下数据

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

,你可以看到正在显示的是列“proxyip”,即使它是第4列的第一件事。

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

UPDATE customers SET realproxy = TRIM(REPLACE(proxy,CONVERT(char(160)USING utf8),''));

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

以前有没有人看过类似的东西?如果需要包括其他内容,请告知我,谢谢。

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

回答

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 ... 

替换功能可以在UPDATE语句以及使用...

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