2015-09-25 54 views
0

我有一個MySQL查詢在95%的時間內沒有顯示任何結果。查詢非常簡單,應該可以得到需要備份的星期幾。我從CSV導入數據到mysql無法刪除結尾字符

我發現當我手動編輯節點名稱時,刪除最後一個字符並手動重新鍵入它將修復該節點的問題。所以我懷疑無形的尾隨字符。我試圖修復用下面的命令,但它確實的NOx解決問題:

UPDATE tsm_nodes SET node_name = TRIM(TRAILING '\r' FROM node_name); 

UPDATE tsm_nodes SET node_name = TRIM(TRAILING '\n' FROM node_name); 

UPDATE tsm_nodes SET node_name = TRIM(node_name); 

從[此]將溶液[1] SO問題,以顯示後字符顯示0結果:

SELECT * FROM Foo WHERE CHAR_LENGTH(field) != CHAR_LENGTH(TRIM(field)) 

查詢:

SELECT DISTINCT ts.daysofweek FROM tsm_schedules ts, tsm_nodes tn 
WHERE tn.node_name = ? AND tn.schedule = ts.name; 

有另一種方式來找出尾隨字符有,他們在任何護理無形。由於有1500多個節點,因此不能手動編輯所有字段。任何幫助表示讚賞。

EDIT2:爲了讓事情變得陌生,當我編輯一個節點而沒有通過PHPMyAdmin調整任何信息並再次保存時,查詢對該節點起作用。

編輯:

在通過延答覆建議:這並不顯示任何有用的:

+--------------------------------+ 
|   HEX(node_name)   | 
+--------------------------------+ 
| 424F4E4866733031    | 
| 424F4E486C696E3031    | 
| 73716C32303035     | 
| 57324B382D6170706C31   | 
| 57326B382D737978    | 
| 4172636F323030382D3332626974 | 
| 70726E736572766572    | 
| 5365727665724172636F   | 
| 77326B382D67656F6974   | 
| 77326B382D736563757265   | 
| 57324B382D65786368616E6765  | 
| 57326B382D7368617265706F696E74 | 
| 41444D2D41444D494E    | 
| 42524F434144455242    | 
| 41434E5F53514C5F44423032  | 
| 41434E5F53514C5F4442   | 
| 41434E5F53514C5F44423031  | 
| 4745414343415448454E41   | 
| 47454143434242433031   | 
| 47454143434242433033   | 
| 47454143434242433034   | 
| 47454143434242433035   | 
| 474541434345525041    | 
| 474541434345525043    | 
| 474541434345525045    | 
+--------------------------------+ 

Allso從拉胡爾·帕蒂查詢不解決或者是:

UPDATE tsm_nodes SET node_name = TRIM(BOTH UNHEX('C2A0') FROM node_name) 
+1

您可以使用'hex' funtion到SINF什麼尾隨字符必須 – Jens

+0

你可以試試這個:'TRIM(BOTH UNHEX( 'C2A0')FROM節點名稱)' –

回答

0

您可以嘗試使用此:

TRIM(BOTH UNHEX('C2A0') FROM node_name) 
+0

這沒有任何影響。 Thx試圖幫忙,雖然 –

+0

@MartinLaw: - 試試這個:TRIM(REPLACE(node_name,'\ r \ n',''))'或可能是'REPLACE(REPLACE(node_name,'\ r',' '),'\ n','');' –

+0

對於這兩個建議都可惜。 –

0

我找到了原因。當我開始手動編輯在phpMyAdmin條目的我從查詢與尾部字符的問題是在計劃領域的輸出注意到,不執行下面的查詢的問題解決後NODE_NAME

UPDATE `cipal`.`tsm_nodes` SET `schedule` = 'WE0230' WHERE `tsm_nodes`.`id` = 153; 

UPDATE tsm_nodes SET `schedule` = TRIM(TRAILING '\r' FROM `schedule`);