2012-05-30 14 views
13

Ist SQL in der Lage, etwas in der folgenden Richtung zu tun: SELECT * FROM table WHERE column = everythingSQL WHERE Spalte = alles

+2

Entfernen Sie einfach diesen Teil der Zeichenfolge. Wenn Sie nicht auf 'column' Wert achten - setzen Sie es nicht einmal auf' where' – zerkms

+0

wenn Sie keine Spalte benötigen, dann entfernen Sie die gesamte WHERE Definition –

+0

FWIW (einige finden das von Interesse): Wenn ein 'WHERE 'ist erforderlich (weil, manchmal manchmal unbeständige Systeme es erfordern ...), dann wird 'WHERE 1 = 1'" zu allem passen ". Ebenso kann dies (wiederum für diese unbeständigen Systeme) erweitert werden: WHERE 1 = 1 ODER c = 'Don't't Care'' ... –

Antwort

13

Ihre Frage drei intrepretations erlauben:

  1. Sie nicht über die Spalte kümmern: die es von der Where-Klausel fallen (oder die alltogether where-Klausel fallen , wenn dies die einzige Unterklausel war)
  2. Sie möchten, dass die Spalte gesetzt wird, was Ihnen egal ist: Verwenden Sie WHERE column IS NOT nULL
  3. Sie möchten eine Suche, die auch alle Datensätze aus einer einfachen SQL-Vorlage angezeigt werden kann: kann spät SELECT * FROM table WHERE column LIKE '%$searchterm%'
6

Alles oder nichts?

Sie könnten einen Platzhalter verwenden, denke ich.

SELECT * FROM table WHERE column LIKE "%" 
+3

Nein, du liegst falsch. '= '%' bedeutet" der Wert ist genau gleich einem Prozentzeichen " – zerkms

+0

Und du liegst wieder falsch, weil es' NULL' Werte nicht enthalten würde – zerkms

+1

Was ist der Sinn davon?Dann einfach 'SELECT * FROM table'. Wenn Sie keinen Filter benötigen, verwenden Sie keine WHERE-Klausel. – nico

1

Suchen Sie vielleicht nach dem IN-Kriterien-Operator? SELECT * aus Tabelle, wo Spalte in (1,2,3,4,5) oder Spalte in ('Wert', 'Wert2', 'Wert3');

17
SELECT * FROM table 

Wenn Sie SQL dynamisch zu erzeugen sind, ist es

SELECT * FROM table WHERE 1=1 

Der 1=1 Platzhalter Sie alle Datensätze zurückgeben können, oder eine tatsächliche Bedingung ersetzen, wenn Sie eine Teilmenge oder benötigen Sie zusätzliche bedingte Anweisungen sind Rückkehr .

Siehe auch
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?

+0

Aber wenn es eine vorbereitete Aussage ist , 1 = 1 wird nicht funktionieren, da es automatisch maskiert wird, nein? – JayIsTooCommon

+0

Wenn es eine vorbereitete Aussage ist, hat es nicht bereits eine WHERE? –

+0

Ich mag die 1 = 1 Lösung! – KinoP

2

Dies ist aber hilfreich sein, andere

du versuchen.

where 
    isnull([column], '') = CASE WHEN @column IS NULL THEN isnull([column], '') ELSE @column END