Как показать и найти скрытые символы (переводы строк и т. Д.) В SQL - PullRequest
4 голосов
/ 26 октября 2009

У меня есть большая база данных MySQL с большим количеством текста (например, «[новая строка] Normal»), который я хочу найти и заменить. Однако я не могу найти его ни в одном из следующих поисков, потому что я не уверен, какие символы используются в том месте, где появляется [новая строка] - отсюда и мой вопрос.

SELECT * FROM table WHERE field LIKE "%<!--[if gte mso 9]><xml>\nNormal%";

SELECT * FROM table WHERE field LIKE "%<!--[if gte mso 9]><xml>\rNormal%";

SELECT * FROM table WHERE field LIKE "%<!--[if gte mso 9]><xml>\n\rNormal%";

SELECT * FROM table WHERE field LIKE "%<!--[if gte mso 9]><xml>\r\nNormal%";

Спасибо за любую помощь, которую вы можете оказать ...

Ответы [ 3 ]

3 голосов
/ 26 октября 2009

Конец строк может быть как CR / LF, т.е. # 13 # 10 (соглашение Dos / Windows) или просто LF - # 10 (соглашение Unix)

Убедитесь, что любое вхождение первого преобразовано во второе:

UPDATE TABLE
SET field = REPLACE( field, CONCAT(CHAR(13),CHAR(10)), CHAR(10) )

На всякий случай вы также можете сделать:

UPDATE TABLE
SET field = REPLACE( field, CHAR(13), CHAR(10) )

Теперь любой символ "Конец строки" будет # 10 (перевод строки)

Если вы хотите, вы можете сделать что-то вроде:

UPDATE TABLE
SET field = REPLACE( field, CHAR(10), '[LF]' )
0 голосов
/ 08 ноября 2009

В более общем смысле «скрытые» символы можно легко набирать на терминале, по крайней мере, в системах на основе UNIX, используя Ctrl + v. Если вы нажмете Ctrl + v, следующий набранный вами символ будет печататься буквально на терминале, а не интерпретироваться какой-либо из промежуточных систем. Используя это, вы можете просто вводить то, что вы используете, и искать новые строки, вкладки или что-нибудь еще, что ест терминал.

Не будет работать, если вы работаете в системе Windows, но этот совет может помочь кому-то, кто имеет подобную проблему и не имеет доступа к функциям CHAR ().

0 голосов
/ 03 ноября 2009

Вам не нужно обновлять строки, чтобы использовать этот запрос.

На самом деле у вас есть два варианта - вы можете использовать подход CHAR (10) / CHAR (13), как уже отмечали другие, или вы можете фактически отправить запрос с буквальным переводом строки, например:

SELECT * FROM table WHERE field LIKE "%<!--[if gte mso 9]><xml>
Normal%";

Чтобы выполнить этот запрос без необходимости использовать буквенные переводы строк:

SELECT * FROM table WHERE field LIKE CONCAT("%<!--[if gte mso 9]><xml>", CHAR(13), CHAR(10), "Normal%");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...