sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan kortslutter du SQL Where-klausul

SQL Server laver ikke kortslutning (det skal den heller ikke).

Hvis du har brug for det, må du ikke prøve noget under nogle omstændigheder, skal du tvinge det frem på den måde, du skriver din forespørgsel på.

Til denne forespørgsel ville den nemmeste løsning være at bruge en CASE udtryk 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)

Direkte, CASE og query-nesting er de eneste to understøttede måder, jeg kan komme i tanke om til at fremtvinge en evalueringsrækkefølge for afhængige forhold i SQL.



  1. Skinner, der skaber schema_migrations - Mysql2::Fejl:Den angivne nøgle var for lang

  2. Optimal måde at opbevare/hente array i tabel

  3. Sådan vises alle visninger i Oracle-databasen

  4. Hvordan man laver en graf ved hjælp af PHP fra oracle