2010-10-26 16 views
0

假設我們有一個textarea,其中放置了示例字符串。文本框包含:PostgreSql +查詢語句在屬性之間有 r!

Earth is revolving around the Sun. 

但是在保存時,我只是在「太陽」後面按了一個回車鍵。現在,在texbox中的語句::

Earth is revolving around 
the Sun 

現在,在數據庫中按Enter鍵的\ r被存儲。我現在想獲取數據,但不能,因爲我的查詢是這樣的類型::存儲在數據庫中的字段

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

實際數據的

atest\r 
100 

請建議我解決issue.I有嘗試gsub來取代,但沒有改變。

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

在此先感謝!

回答

1

試試這個:

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

這與數據的一個空間中已經存在的數據庫,以取代CRLF。你使用postgresql的psql來做到這一點。

要防止包含crlf的新數據進入數據庫,您應該在應用程序中執行此操作。如果您使用Ruby的GSUB,不要使用單引號,使用雙引號來\ n識別這樣的:

thestring.gsub("\n", " ") 
+0

我應該在哪裏使用這個數據庫查詢的存儲時間。我對嗎 ? – Rubyist 2010-10-26 11:27:20

+0

這就是修復已經存在於數據庫中的數據。 – 2010-10-26 11:32:10

0

在這裏我們可以通過更換%\r\n獲取數據。

Seaching查詢將是這樣的:

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

GSUB功能::

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

如果你解決了你自己的問題,它適合你,你應該接受你自己的答案。 – Zabba 2011-05-13 04:47:07