¿Es posible usar una cláusula IF dentro de una cláusula WHERE en MS SQL?
Ejemplo:
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
sql
sql-server
tsql
Bryan Roth
fuente
fuente
CASE
es la solución adecuada en la mayoría de los casos. En mi caso, quería cambiar el operador de comparación y, por lo tanto, utilicé el siguiente enfoque.Debería poder hacer esto sin IF o CASE
Dependiendo del sabor de SQL, es posible que necesite ajustar los conversiones en el número de pedido a un INT o VARCHAR dependiendo de si se admiten conversiones implícitas.
Esta es una técnica muy común en una cláusula WHERE. Si desea aplicar alguna lógica "IF" en la cláusula WHERE, todo lo que necesita hacer es agregar la condición adicional con un booleano AND a la sección donde debe aplicarse.
fuente
No necesita una declaración IF en absoluto.
fuente
where (@AdmUserId is null or CurrentOrder.CustomerAdmUserId = @AdmUserId)
o solo filtra si IncludeDeleted = 0:where (@IncludeDeleted = 1 or ItemObject.DeletedFlag = 0)
No hay una buena manera de hacer esto en SQL. Algunos enfoques que he visto:
1) Use CASE combinado con operadores booleanos:
2) Use IF fuera de SELECT
3) Usando una cadena larga, componga su declaración SQL condicionalmente, y luego use EXEC
El tercer enfoque es horrible, pero es casi el único que funciona si tiene una serie de condiciones variables como esa.
fuente
IF...ELSE...
condicionales en booleanoAND
's yOR
' s como en @ njr101 respuesta anterior. La desventaja de ^ este enfoque es que puede ser muy difícil si tienes muchosIF
, o si tienes muchos anidadosUse una declaración CASE en lugar de IF.
fuente
Desea la declaración CASE
fuente
Creo que donde ... como / = ... case ... entonces ... puede funcionar con Booleans. Estoy usando T-SQL.
Escenario: Digamos que desea obtener los pasatiempos de la Persona-30 si bool es falso y los pasatiempos de la Persona-42 si bool es verdadero. (Según algunos, las búsquedas de pasatiempos comprenden más del 90% de los ciclos de cómputo de negocios, por lo tanto, pague cerca).
fuente
fuente
IF P THEN Q ELSE R
<=>
( ( NOT P ) OR Q ) AND ( P OR R )
fuente
En línea caso Condición funcionará correctamente.
fuente
El siguiente ejemplo ejecuta una consulta como parte de la expresión booleana y luego ejecuta bloques de sentencias ligeramente diferentes en función del resultado de la expresión booleana. Cada bloque de instrucciones comienza con BEGIN y termina con END.
Uso de instrucciones anidadas IF ... ELSE El siguiente ejemplo muestra cómo una declaración IF ... ELSE puede anidarse dentro de otra. Establezca la variable @Number en 5, 50 y 500 para probar cada instrucción.
fuente
En el servidor sql tuve el mismo problema, quería usar una instrucción y solo si el parámetro es falso y en verdadero tuve que mostrar los valores verdadero y falso, así que lo usé de esta manera
fuente
A ver si esto ayuda.
fuente
fuente