2017-07-19 209 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','')