En Delphi 7, ¿cómo escapo un signo de porcentaje (%) en la función Formato?
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+'%']);
?
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