所以我有一个存储数据的表,我相信其中包含隐藏的字符。
当我从表中选择*时;我得到以下数据
+----------+----------------------+-----------+-----------------+---------------------+--------------------+------+-----------+
| 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:我只是在每一列上做了一个选择,它唯一看起来的列就是代理。
答案 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','')