我想要獲取某些字符串字段以給定前綴開頭並結束於任何一個字符的記錄。基本上是:只轉義where子句中的某些字符
Model.where('field LIKE ?', "#{prefix}_").count
的問題是,前綴本身可能包含特殊字符(如%
或_
)。
有沒有辦法擺脫前綴,但不是跟蹤_
沒有滾動我自己的消毒劑與一堆#gsub
s?
我想要獲取某些字符串字段以給定前綴開頭並結束於任何一個字符的記錄。基本上是:只轉義where子句中的某些字符
Model.where('field LIKE ?', "#{prefix}_").count
的問題是,前綴本身可能包含特殊字符(如%
或_
)。
有沒有辦法擺脫前綴,但不是跟蹤_
沒有滾動我自己的消毒劑與一堆#gsub
s?
沒有比用\_
全部替換所有_
和全部%
與\%
更好的解決方案以逃避它們的特殊含義。
Model.where("field LIKE ?||'_'", escapeDataFunction("#{prefix}")).count
這個想法是爲了逃避需要轉義的東西,並在「where」條件下硬編碼另一部分。還要注意,當使用替換變量(?或:1)時,通常不需要轉義數據,但「like」表達式是一個例外,在這種情況下,您應該轉義特殊字符像運營商。