2009-04-20 8 views

Antwort

1

Verwendung koaleszieren!

Edit: Dies ist wahrscheinlich der falsche Weg, aber ich denke, es ist eine Option.

4

Hängt davon ab, was Sie mit "nicht zur Verfügung gestellt" meinen. Wenn das bedeutet, NULL, können Sie immer versuchen

(
    Table.Column LIKE @myParameter 
OR 
    @myParameter IS NULL 
) 

Ich habe auch festgestellt, dass dies manchmal schneller funktioniert.

ISNULL(Table.Column, @myParameter) = @myParameter 

Alternativ, wenn Sie dynamisch die Tsql von Code bauen, nur ommit dass ein Teil der Klausel WHERE, wenn Sie nicht die Parameter haben oder mit ‚%‘ besiedeln @myParameter.

0
SELECT 
lalala 
WHERE 1=1 
and (
    value like '%'[email protected]+'%' 
    or @search = '' 
) 

Obwohl ich nicht sicher bin, wie es durchführt ...

+0

Wenn Sie% auf jeder Seite haben, wird alles übereinstimmen, wenn @search '' auf jeden Fall ist. In diesem Fall brauchen Sie nur das ODER, wenn Sie eine exakte Übereinstimmung machen. –

0

persönlich, das ist die Art von Situation, wo ich die SQL-Anweisung in dem VB/C# -Code bauen würde, und einfach nicht Verkette die LIKE-Klausel am Ende, wenn ich sie nicht habe.

Die etwas schickere Version von dem, was ich gerade gesagt habe, ist, zwei Versionen einer vorbereiteten Anweisung zu haben, eine mit und ohne die LIKE-Klausel, und die passende zu nennen, wie Sie brauchen.