2017-05-25 7 views
-1

Ich habe ein sehr großes Stück Code gegeben, und es ist ein Fehler für den CASE-Ausdruck innerhalb einer Schleife Anfrage, könnte jemand diesen Code schauen und mir sagen, ob das, was das verursacht Problem oder sollte das funktionieren?SQL WHERE CASE Ausdruck funktioniert nicht

WHERE 
case when POWER(2, 5) & T.TABLE_NAME = POWER(2, 5) then 1 else 0 end > 0 

Leider kann ich nicht mehr Informationen geben, wie ich sagte, dies in der Schleife Abfrage Abschnitt ist, und ich bin schrecklich mit Schleife Abfragen.

+0

, Beispieldaten zur Verfügung, und was ist Ihre erwartete Ausgabe ..? – Mansoor

+0

Was DB ist das? Welchen Fehler bekommst du? Ich selbst als "menschlicher Parser" gibt auch einen Fehler, wenn ich versuche, diesen Ausdruck zu verstehen ... – Galcoholic

+0

Wenn es ssms ist, dann würde ich SQL Server annehmen. Verwenden Sie einen HAVING-Ausdruck statt WHERE –

Antwort

0

Zunächst einmal muss die CASE-Anweisung Teil des Ausdrucks sein, nicht der Ausdruck selbst.

Es

WHERE 
0 < case when POWER(2, 5) & T.TABLE_NAME = POWER(2, 5) then 1 else 0 end 
+0

Danke, leider immer noch der selbe Fehler. – Mike

0

sein sollte Wenn ich zu erraten war, ist T.TABLE_NAME numerischer Wert nicht ein. Daher erhalten Sie einen Fehler, wenn Sie einen bitweisen Operator verwenden.

Wenn es numerische wäre, dann wäre es einfacher, zu schreiben:

WHERE (POWER(2, 5) & T.TABLE_NAME) > 0 

Oder noch einfacher:

WHERE (32 & T.TABLE_NAME) > 0