PostgreSql + оператор запроса, имеющий \ r между атрибутами! - PullRequest
0 голосов
/ 26 октября 2010

Предположим, у нас есть текстовая область, в которую мы помещаем пример строки.Текстовое поле содержит:

Earth is revolving around the Sun.

Но во время сохранения я просто нажал клавишу ввода после «солнца».Теперь операторы в texbox ::

Earth is revolving around
 the Sun

Теперь в базе данных, где была нажата кнопка ввода, сохраняется \ r.Теперь я пытаюсь получить данные, но не могу, потому что мой запрос имеет такой тип: *

SELECT * FROM "volume_factors" WHERE lower(volume_notes) like E'atest\\r\\n 100'

Фактические данные, хранящиеся в поле базы данных

atest\r
100

Пожалуйста, предложите мне решитьПроблема. Я пытался заменить gsub, но без изменений.

search_text_array[1] = search_text_array[1].gsub('\\r\\n','\r\n')

Заранее спасибо !!!

Ответы [ 2 ]

1 голос
/ 26 октября 2010

Попробуйте:

update volume_factors set volume_notes = regexp_replace(volume_notes, '\r\n', ' ');

Это заменит crlf одним пробелом для данных, которые уже находятся в базе данных.Для этого вы используете psql из postgresql.

Чтобы предотвратить попадание новых данных, содержащих crlf, в базу данных, вы должны сделать это в приложении.Если вы используете gsub в ruby, не используйте одинарные кавычки, используйте двойные кавычки для распознавания \ n следующим образом:

thestring.gsub("\n", " ")
0 голосов
/ 27 октября 2010

Здесь мы можем заменить \r\n на % для извлечения данных.

Seaching Query будет выглядеть так: *

SELECT * FROM "volume_factors" WHERE lower(volume_notes) like E'atest% 100'

Функция gsub ::

search_text_array[1] = search_text_array[1].gsub('\\r\\n','%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...