MySQL: символ пробела в поле на самом деле не является пробелом. Что это? - PullRequest
0 голосов
/ 15 марта 2012

У меня есть строка в поле в таблице MySQL.

Это VARCHAR, кодировка таблицы - utf8.

Содержимое поля: one two three

Если я запускаю select * from table where content like '%one two%';, строка возвращается.
Однако, если я запускаю update table set content = REPLACE(content, " ", "+;;");, то получается one two+;;three.

Итак, что это за первый символ пробела?

Я использую эту таблицу с приложением Ruby on Rails. Руби также не распознает его как пробельный символ. (например, если я разделю строку на «», она не будет разбита на первый пробел)

Есть идеи, что происходит?

Спасибо.

1 Ответ

2 голосов
/ 15 марта 2012

Это, вероятно, символ пробела без пробелов (2 байта в UTF8: 0xC2 0xA0).Это не пробел, и сравнение его с пробелом даст ложь.

Вы можете обновить таблицу следующим образом:

UPDATE table SET column = REPLACE(column, ' ', ' ');

Обратите внимание, что вы должны убедиться, что первый 'пробел'на самом деле символ, который вы хотите заменить.

...