2011-09-22 20 views
10

Deseo realizar la siguiente consulta usando Dapper, que actualmente no arroja los resultados esperados (creo que debe tratar el @pName param como texto literal dentro de las comillas simples?):Cláusula LIKE parametrizada en una declaración SQL usando Dapper

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

@pName es el parámetro al que asigno un valor al ejecutar la consulta.

cosas funcionan si acabo de construir el SQL como:

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

.. pero prefiero utilizar un parámetro, si es posible.

Estoy ejecutando la consulta usando el siguiente código:

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

¿Cómo llegué sobre este usando Dapper?

+2

asegúrese de recordar para escapar de su cláusula como (véase el comentario sobre la respuesta) –

Respuesta

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

Asegúrese de que su cláusula de escapar aunque como: http://stackoverflow.com/questions/439495/tsql-like-escape-clause –

+0

@Sam: Buen punto. –

+0

Gracias Sam. No estaba familiarizado con esto, así que lo agregaré. – marcusstarnes

Cuestiones relacionadas