¿Cómo evito que Delphi interprete caracteres especiales como parameters en SQL?

Quiero ejecutar una consulta Sql con caracteres especiales. Sin embargo, no quiero usar parameters sql. Hay una forma de ejecutar la siguiente consulta?

SqlString := 'Select * from Table1 where Name LIKE '`1234567890-=\]['';/.,<>?:"{}|+_)(*&^%$#@!~%' FSQLQuery.SQL.Clear; FSQLQuery.SQL.Add( SqlString ); FSQLQuery.Open; 

Delphi considera que esta consulta está parametrizada debido al signo de dos puntos en '' 1234567890 – =] [''; /., <>? : "{} | + _) (* & ^% $ # @! ~% 'y throws (Sin valor para el parámetro' {} | + _) (* & ^% $ # @! ~% ').

Deberías poner algo como esto:

 sqlString := 'SELECT * FROM Table1 WHERE Name LIKE ''`1234567890-=\]['''';/.,<>?:"{}|+_)(*&^%$#@!~%'' '; FSQLQuery.ParamCheck := False; //<<It MUST be prior than SetSql. FSQLQuery.SQL.Clear; FSQLQuery.SQL.Add( sqlString ); FSQLQuery.Open; 

Si FSQLQuery es TADOQuery , la forma más fácil de evitar este problema (colon char dentro de SQL.Tex ) es usar FSQLQuery.Connection.Execute(FSQLQuery.SQL.Text) lugar de FSQLQuery.Open . En este caso, llama al método ADO directamente sin que Delphi Sql.Text tu Sql.Text .

Atención a caracteres escapados dentro de SQL también, es posible resolver con la function QuotedStr para que funcione bien:

 sqlString := 'SELECT * FROM Table1 WHERE Name LIKE ' + QuotedStr('`1234567890-=\]['''';/.,<>?:"{}|+_)(*&^%$#@!~%'' ) + ';';