2016-02-15 35 views
0

我知道LIKE忽略的符號是一個SQL命令,所以我會添加SQL中也如何使用LIKE功能Rails中

基本上我有這個命令

gigurldb = Gigtable.where('eventtitle ILIKE ? AND eventdoortime = ? ', "%#{tmname}%", "#{tmdate}").first 

會發生什麼事是tmname通行證通過名稱

Granny Smiths - Apples 

而在Gigtable其保存在eventtitle列,因爲這

Granny Smiths : Apples 

現在這不是由LIKEILIKE方法拾起。

任何想法,我可以擺脫這種工作?

感謝

+0

一個可能的解決方案是Postgres「全文搜索」。它有點複雜,但它涵蓋了你的情況(還有更多)。 –

回答

0

ILIKE代碼只對非大小寫敏感的操作而已。不過在這種情況下是有幫助的,取代了 - 有:不被接受ILIKEILIKE僅在Granny Smiths - Applesgranny smiths - Apples情景匹配時纔有效。請點擊鏈接瞭解更多詳情 Postgres SELECT a concat field and ILIKE it in Rails

0

如果問題字符總是冒號或連字符,可以用通配符替換搜索字符串中的冒號&。

gigurldb = Gigtable.where('eventtitle ILIKE ? AND eventdoortime = ? ', "%#{tmname.gsub(/[\-\:]/,"%")}%", "#{tmdate}").first 

這將生成SQL像

eventtitle ILIKE '%Granny Smiths % Apples%' 

它捕捉這兩種情況。