我在Windows Server 2008 Enterprise中使用SQL Server 2008 Enterprise。我有一个名为“书”的数据库表,它有很多列和三列在这个问题中很重要,它们是sql select语句问题中的where子句
- 作者,varchar;
- Country,varchar;
- Domain,varchar。
我想用以下逻辑编写存储过程,但我不知道如何编写(因为复杂的查询条件),感谢任何人都可以为我编写样本?
输入参数:p_author为varchar,p_country如varchar和p_domain为varchar
查询条件:
- 如果从输入指定p_author,然后其作者柱LIKE任一行%p_author%的满足条件,如果未从输入中指定p_author,则每行都满足此条件;
- 如果从输入中指定了p_country,那么任何其Country列= p_country的行都满足条件,如果未从输入中指定p_country,则每行满足此条件;
- 如果从输入中指定了p_domain,那么任何其列域LIKE%p_domain%满足的行,如果未从输入中指定p_domain,则每行满足此条件;
结果我想回到(必须满足所有以下条件):
- 记录会见了任一条件1或2;
- 记录必须符合条件3;
- 返回不同的行。
例如,满足条件1和条件3的记录可以返回,满足条件2和条件3的记录可以返回。
由于事先 乔治
查询条件3是否正确表达?从项目符号的角度来看,查询条件3应该是“任何一个行列的LIKE%p_domain%被满足的行” - 即。必须根据第二个项目符号提供p_domain。 – 2010-07-15 17:19:57
原始描述是正确的。但不是很清楚,对不起。 :-) 可以用这种方式描述,如果p_domain从输入中为空,那么p_domain总是满足条件3,因为如果没有从输入中指定p_domain,表中的每一行都满足这个(意味着第3个)条件。 – George2 2010-07-15 17:36:04