【发布时间】:2014-07-27 20:24:40
【问题描述】:
当涉及到WHERE 子句时,一切都清楚了:
puts $DB[:users].where('field = ?', "'").sql # SELECT * FROM `users` WHERE (field = '\'')
puts $DB[:users].where(field: "'").sql # SELECT * FROM `users` WHERE (`field` = '\'')
但是ORDER BY 的呢?
puts $DB[:users].order_by(
("field = '%s'" % "'").lit
).sql # SELECT * FROM `users` ORDER BY field = '''
【问题讨论】:
-
我帮不了你,但我很好奇,我从来没有见过像这样的值的
ORDER BY,这到底是什么意思? -
考虑一个包含用户列表的页面。我希望它们显示如下:首先来自我镇的用户,然后来自我的国家,然后是其他任何人。一种方法是:
SELECT * FROM users ORDER BY town == '<my town>' DESC, country == '<my country>' DESC
标签: ruby escaping sinatra sequel quoting