sql – WHERE子句中的可选参数
发布时间:2020-12-12 16:21:14 所属栏目:MsSql教程 来源:网络整理
导读:假设有一个存储过程有3个参数.在所有可能性中,我正在寻求使用单个WHERE子句来实现此目的,而不用使用()AND()OR()太多… 例: //Params@CITY VARCHAR(100) = NULL,@GENDER VARCHAR(100) = NULL,@AGE VARCHAR(100) = NULL 我想你可以使用IF BEGIN … END为每个变
假设有一个存储过程有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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |