只转义where子句中的一些字符

时间:2017-04-24 13:49:30

标签: ruby-on-rails postgresql activerecord

我想获取一些字符串字段以给定前缀开头并以任何一个字符结尾的记录。基本上是:

 Model.where('field LIKE ?', "#{prefix}_").count

问题是前缀本身可能包含特殊字符(例如%_)。

有没有一种方法可以转义前缀,但是如果没有使用一堆_来推销我自己的消毒剂,有没有转发#gsub

2 个答案:

答案 0 :(得分:0)

没有比使用_替换所有\_和使用%替换所有\%更好的解决方案,以逃避其特殊含义。

答案 1 :(得分:0)

ssh

这个想法是逃避需要转义的内容,并在“where”条件下对其他部分进行硬编码。还要注意,当使用替换变量(?或:1)时,通常根本不需要对数据进行转义,但是“like”表达式是一个例外,在这种情况下,你应该转义具有含义的特殊字符。喜欢运营商。