So verwenden Sie Parameter und die LIKE-Anweisung in SQL
In SQL können Sie mit der LIKE-Anweisung einen Mustervergleich innerhalb von Zeichenfolgen durchführen. Die Verwendung ohne entsprechende Vorsichtsmaßnahmen kann jedoch zu SQL-Injection-Angriffen führen. Um solche Angriffe zu verhindern, können parametrisierte Abfragen eingesetzt werden.
Ursprüngliche Frage
Um SQL-Injection-Schwachstellen zu begrenzen, wurde die folgende Abfrage mithilfe von Parametern erstellt:
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
Die Ausführung dieser Abfrage in einem Programm führt jedoch zu keinen Ergebnissen. Können Parameter auf diese Weise verwendet werden oder sind sie nur in Situationen wie den folgenden anwendbar:
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'
Lösung
Parameter können wie vorgesehen in LIKE-Anweisungen verwendet werden . Die Syntax in der ursprünglichen Abfrage ist falsch. So verwenden Sie Parameter in diesem Szenario richtig:
Dim cmd As New SqlCommand( "SELECT * FROM compliance_corner" _ + " WHERE (body LIKE @query )" _ + " OR (title LIKE @query)") cmd.Parameters.Add("@query", "%" & searchString & "%")
Diese Abfrage stimmt korrekt mit Zeichenfolgen überein, die die Suchzeichenfolge im Text- oder Titelfeld enthalten.
VB. NET-Überlegungen
Die bereitgestellte Lösung ist syntaktisch korrekt für VB.NET. Die tatsächliche Implementierung kann jedoch je nach dem jeweiligen Datenbankanbieter und der verwendeten Verbindungsmethode variieren. Weitere Hinweise finden Sie in der entsprechenden Dokumentation.
Das obige ist der detaillierte Inhalt vonKönnen Parameter mit der LIKE-Anweisung in SQL für den Mustervergleich verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!