sql >> Database >  >> RDS >> Sqlserver

Hoe SQL kortsluiten Where-clausule

SQL Server maakt geen kortsluiting (en dat zou ook niet moeten).

Als je het niet probeer onder bepaalde omstandigheden moet u dat forceren op de manier waarop u uw vraag schrijft.

Voor deze query is de eenvoudigste oplossing het gebruik van een CASE uitdrukking in uw WHERE clausule.

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)

Uit de hand, CASE en het nesten van query's zijn de enige twee ondersteunde manieren die ik kan bedenken om een ​​evaluatievolgorde voor afhankelijke voorwaarden in SQL af te dwingen.



  1. tomcat 6.0.24 Uitzondering:kan com.mysql.jdbc.SQLError niet laden

  2. Geeft TSQL snellere resultaten dan de opgeslagen procedure in SQL Server?

  3. Normaliseer transactiegegevens van tijd- en statuskolommen naar minuten per statuswaarde

  4. Trigger maken in mysql voor generatie UUID