wie LIKE-Klausel in ADO.NET und SQL Server funktioniert

8

Ich mache eine wirklich einfache Abfrage in ASP.NET, aber nachdem ich die LIKE -Klausel eingefügt habe, funktioniert sie nicht mehr.

Beispiel:

%Vor%

Wenn ich das LIKE entfernt habe, funktioniert es. Daher denke ich, dass es mit den Zitaten zu tun hat?

    
noobplusplus 07.04.2010, 00:37
quelle

5 Antworten

26

Der ursprüngliche Code verwirrt den Text der SQL-Anweisung mit dem Inhalt des Parameters. Ihr Code sollte eigentlich so aussehen:

%Vor%

Die % -Zeichen müssen Teil des Parameterwerts sein, und Sie benötigen keine einfachen Anführungszeichen, wenn Sie Bindungsparameter verwenden.

    
Aaronaught 07.04.2010 01:14
quelle
1

Nur ein Hinweis, dass die Verwendung von LIKE mit einem anfänglichen Platzhalter fast immer eine sehr schlechte Idee ist, da die Abfrage keine Indizes für diese Spalte verwendet. In diesem Fall können Sie wahrscheinlich davonkommen, weil es so aussieht, als würde der Filter in der ID-Spalte Sie auf einen Datensatz beschränken, aber im Allgemeinen wird stattdessen ein Volltextindex in die Namensspalte geschrieben und die Abfrage wie geschrieben das:

%Vor%     
Joel Coehoorn 07.04.2010 01:02
quelle
0

Oder

%Vor%

Wenn Sie den Parameter @MYNAME festlegen, fügen Sie die Zeichen "%" entsprechend hinzu (% SMITH%). Ich glaube nicht, dass Sie die einfachen Anführungszeichen brauchen, wenn Sie mit Parametern zu tun haben.

    
bryanjonker 07.04.2010 00:55
quelle
0

Glauben Sie nicht, dass die Verwendung eines Bindungsparameters dem Einfügen seines Werts in die SQL-Zeichenfolge ähnelt! Bind-Parameterwerte werden als separate Daten an die DB gesendet, daher dürfen sie nicht in Anführungszeichen stehen und sie dürfen auch keine optionalen SQL-Code-, Tabellen- oder Spaltennamen enthalten!

    
Erik Hart 03.02.2014 15:32
quelle
-1

Sie verpassen das Zeichen % beim Übergeben des Parameterwerts

%Vor%     
iTSrAVIE 27.04.2011 09:40
quelle

Tags und Links