sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo hacer un cortocircuito en la cláusula Where de SQL

SQL Server no hace cortocircuitos (ni debería hacerlo).

Si lo necesitas para no intentar algo bajo algunas circunstancias, debe forzar eso en la forma en que escribe su consulta.

Para esta consulta, la solución más fácil sería usar un CASE expresión en su WHERE cláusula.

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)

De mano, CASE y el anidamiento de consultas son las dos únicas formas admitidas en las que puedo pensar para forzar un orden de evaluación para las condiciones dependientes en SQL.