sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man kortsluter SQL Where-klausul

SQL Server gör inte kortslutning (det borde den inte heller).

Om du behöver det ska du inte försöka något under vissa omständigheter måste du tvinga fram det på det sätt som du skriver din fråga.

För den här frågan skulle den enklaste lösningen vara att använda en CASE uttryck i din WHERE klausul.

declare @queryWord as nvarchar(20) = 'asdas'

SELECT  * FROM TABLE_1 
WHERE TABLE_1.INIT_DATE = (CASE WHEN ISDATE(@queryWord) = 1 
                                THEN CONVERT(Date, @queryWord)
                           ELSE NULL  END)

Direkt, CASE och query-nesting är de enda två sätt som jag kan tänka mig för att tvinga fram en utvärderingsordning för beroende villkor i SQL.



  1. PHP $_SESSION problem

  2. Oracle-tabellkolumnnamn med mellanslag

  3. Skickar SQL-operatorer för att fråga genom iReport Parameter

  4. uppdatera tabell med dynamiskt förberedda uttalanden