Pregunta

Quiero hacer algo como esto:

SQL.Text := Format('select foo from bar where baz like ''%s%''',[SearchTerm]);

Pero al Formato no le gusta ese último '%', por supuesto. Entonces, ¿cómo puedo escapar? \% ? %% ?

O tengo que hacer esto:

SQL.Text := Format('select foo from bar where baz like ''%s''',[SearchTerm+'%']);

?

¿Fue útil?

Solución

Use otro% en la cadena de formato:

SQL.Text := Format('select foo from bar where baz like ''%s%%''',[SearchTerm]);

Otros consejos

%%, IIRC.

Obligatorio: http://xkcd.com/327/ :-)

Dependiendo del contexto, su enfoque puede ser vulnerable a la inyección de SQL. Si el término de búsqueda proviene de la entrada del usuario, probablemente sería mejor usar una consulta parametrizada o al menos intentar desinfectar la entrada.

Agregue un signo de 2 por ciento para tener 1% único
Ejemplo:

 Format('select foo from bar where baz like ''%%%s%%'',[SearchString])

Te da

select foo from bar where baz like '%SearchString%'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top