SQL-Bedingung, String vergleichen in der Where-Klausel

Mithilfe von SQL Server, ich habe eine gespeicherte Prozedur, die ich verwenden möchte, um eine string-Suche ist optional.

@search ist ein parameter. Wenn @search einen Wert hat, möchte ich die Suche nach der Zeichenfolge, ansonsten, wenn es leer ist, sollte es umgehen die Suche.

Ich wollte nur wissen, Ihre Gedanken über die optimale Art und Weise zu schreiben einen optionalen string-Suche in einer WO.

Nun habe ich es als

AND (@search = '' OR [t4].number like '%'+@search+'%')

Aber was ich nicht in der Lage, um herauszufinden, ist, wenn die wie wertet auch wenn @search = '' wahr ist

Wenn es immer noch vergleichen Sie beide Seiten der ODER dann ich dachte, mit diesem

AND (CASE WHEN @search = '' THEN 1 
          ELSE (CASE WHEN [t4].number like '%'+@search+'%' THEN 1 
                     ELSE 0 END) END) = 1

Edit:ich habe ein paar tests und es sieht aus wie das Gehäuse weniger liest.

InformationsquelleAutor zeal | 2012-01-26
Schreibe einen Kommentar