Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment court-circuiter la clause SQL Where

SQL Server ne fait pas de court-circuit (et ne devrait pas le faire).

Si vous en avez besoin pour ne pas essayer quelque chose dans certaines circonstances, vous devez forcer cela dans la façon dont vous écrivez votre requête.

Pour cette requête, la solution la plus simple serait d'utiliser un CASE expression dans votre WHERE clause.

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)

Désinvolte, CASE et l'imbrication de requêtes sont les deux seuls moyens pris en charge auxquels je peux penser pour forcer un ordre d'évaluation pour les conditions dépendantes en SQL.