在Ruby中的SQL查询中逃避反斜杠

时间:2014-12-25 19:47:20

标签: sql ruby sqlite escaping backslash

我在 SQLite 中尝试了这一点(即只返回了带有字符“_ S _”的trip_id):

SELECT trip_id, arrival_time 
FROM stop_times 
WHERE stop_id  = 142444 trip_id LIKE '%\_S\_%' ESCAPE '\' 

但是当我试图通过像这样的ruby传递该查询时:

SELECT trip_id, arrival_time 
FROM stop_times 
WHERE stop_id  = #{arret[1].to_i} AND trip_id LIKE \'%\_S\_%\'

我没有相同的结果(即返回没有“_ S _”的trip_id)。

我试图在ruby命令中添加Escape \'\\\'而没有运气 难道我做错了什么?

ps:我在Windows 8上使用 Ruby 1.9.3和SQLite 3.8.7.4

2 个答案:

答案 0 :(得分:0)

您不需要在双引号内使用带单引号的反斜杠。

(另外,查找%q和%Q ruby​​运算符。)

答案 1 :(得分:0)

只需要逃避下划线(_)。

试试这个:

"SELECT trip_id, arrival_time FROM stop_times WHERE stop_id  = #{arret[1].to_i} AND trip_id LIKE '%\_S\_%'"

OR
如果你在 Rails

StopTime.select('trip_id, arrival_time').where("stop_id = ? AND trip_id LIKE ?", arret[1].to_i, '%\_S\_%')