我想做的事情如下:
SELECT * FROM USER WHERE NAME LIKE '%Smith%';
Run Code Online (Sandbox Code Playgroud)
我在Arel的尝试:
# params[:query] = 'Smith'
User.where("name like '%?%'", params[:query]).to_sql
Run Code Online (Sandbox Code Playgroud)
但是,这变为:
SELECT * FROM USER WHERE NAME LIKE '%'Smith'%';
Run Code Online (Sandbox Code Playgroud)
Arel正确地包装查询字符串'Smith',但因为这是一个LIKE语句,所以它不起作用.
如何在Arel中进行LIKE查询?
PS奖金 - 我其实是想扫描桌子上两个字段,这两个名称和说明,看是否有查询的任意匹配.那会怎么样?
我想将url字段与url前缀(可能包含百分号)匹配,例如.where("url LIKE ?", "#{some_url}%")
.什么是最多的Rails方式?
我试图在我的rails应用程序中执行SQL查询.以下执行正常,因为它正在寻找完全匹配:
connection.query("SELECT *
FROM test
WHERE y=#{connection.quote(name)}
ORDER BY x ASC")
Run Code Online (Sandbox Code Playgroud)
我想使用LIKE运算符来查找部分匹配.在SQL中它看起来像:
SELECT * FROM test WHERE y LIKE '%John%' ORDER BY x ASC
我如何在Ruby查询中执行此操作?我尝试%
在几个地方添加,但它不起作用.我得到的错误说我的查询正在寻找%'John'%
而不是'%John%'
connection.query("SELECT *
FROM test
WHERE y LIKE #{%connection.quote(name)%}
ORDER BY x ASC")
Run Code Online (Sandbox Code Playgroud)