sql – WHERE子句中的可选参数

前端之家收集整理的这篇文章主要介绍了sql – WHERE子句中的可选参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设有一个存储过程有3个参数.在所有可能性中,我正在寻求使用单个WHERE子句来实现此目的,而不用使用()AND()OR()太多…

例:

//Params
@CITY VARCHAR(100) = NULL,@GENDER VARCHAR(100) = NULL,@AGE VARCHAR(100) = NULL

我想你可以使用IF BEGIN … END为每个变量,如果存在,但这使代码比想要的时间要长.

以下方法将无法正常工作,因为它的方式太长(这里有大约10个不同的字段,但是例子只有3个),而且我不确定它是否甚至直接提取了独特的值…

SELECT NAME FROM TABLE 
WHERE (
(CITY=@CITY AND GENDER=@GENDER AND AGE=@AGE)
OR (CITY=@CITY AND GENDER=@GENDER)
OR (GENDER=@GENDER AND AGE=@AGE)
OR (CITY=@CITY AND AGE=@AGE)
OR (CITY=@CITY)
OR (GENDER=@GENDER)
OR (AGE=@AGE)
)

是否有更短的更有效的方法呢?

如果是,该方法最好与JOIN兼容.

解决方法

除了ISNULL / COALESCE选项,您还可以将参数测试为null:
SELECT NAME  
FROM TABLE  
WHERE  
    (@City IS NULL OR City = @City)
AND 
    (@Gender IS NULL OR Gender = @Gender)
AND 
    (@Age IS NULL OR Age = @Age)

猜你在找的MsSQL相关文章