2011-09-22 326 views
10

我想使用Dapper执行以下查询,它目前不会返回预期的结果(我认为它必须将@pName参数视为单引号内的文本文本):SQL语句中使用Dapper的参数化LIKE子句

var q = "SELECT * FROM Users WHERE Name LIKE '@pName%'"; 

@pName是param我分配一个值来执行查询。

工作的事情,如果我只是建立像SQL:

var q = "SELECT * FROM Users WHERE Name LIKE '" + name + "%'"; 

..但我宁愿如果可以使用PARAM。

o = _cn.Query<User>(q, new { pName = new DbString { Value = name, IsFixedLength = false, Length = 25, IsAnsi = true } }).ToList(); 

我如何得到这个使用了Dapper:

我使用下面的代码执行查询?

+2

确保你记住逃避你喜欢条款(见答案评论) –

回答

15
SELECT * FROM Users WHERE Name LIKE @pName + '%' 
+3

确保你逃避你喜欢条款,但:http://stackoverflow.com/questions/439495/tsql-like-escape-clause –

+0

@Sam:好点。 –

+0

谢谢萨姆。我不熟悉这个,所以会加上它。 – marcusstarnes