2015-09-25 2 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 и сохраняя ее снова, запрос работает для этого узла.

EDIT:

В ответ на предложение Йенса: Это ничего полезного не показывает:

+--------------------------------+ 
|   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 запрос от Рахуло Tripathi не устанавливает либо:

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

Вы можете использовать 'hex' Funtion для sinf, что конечные полукокса у вас есть – Jens

+0

Вы можете попробовать это:' TRIM (ОБА UNHEX ('C2A0') FROM имя_узла) ' –

ответ

0

Вы можете попробовать:

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

это не имеет никакого эффекта. Thx за попытку помочь, хотя –

+0

@MartinLaw: - Попробуйте следующее: «TRIM (REPLACE (имя_узла, '\ r \ n', ''))' или может быть 'REPLACE (REPLACE (имя_узла, '\ r', ' '),' \ n ',' '); ' –

+0

Ужасно никакого эффекта для обоих предложений. –

0

Я нашел причину. Когда я начал вручную редактировать запись-й в PHPMyAdmin я заметил на выходе из запроса, что проблема с задними персонажами была на поле графика, не имя_узел

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

после выполнения следующего запроса проблема была решена.

UPDATE tsm_nodes SET `schedule` = TRIM(TRAILING '\r' FROM `schedule`); 
Смежные вопросы