我必须在三列中搜索数据。对于某些用户,我搜索第1列,对于其他用户,我搜索第1列和第3列,最后搜索其他用户,我会查看第2列。
我知道我可以使用case或if语句并说if userId = 1 then
运行特定的SQL statememnt。但声明非常大,我不想每次重复整个事情。是否可以使用CASE
或IF
语句(或其他内容)来更改语句的WHERE
部分中的条件?
例如,如果公司名称为x,则检查第1列或第3列中的值,否则请在第2列中选中。
我是一个非常小的SQL Fiddle here,但我不知道从哪里开始。
答案 0 :(得分:0)
您始终可以使用 OR 子句直接在 where 语句中添加所需的逻辑:
[...] WHERE ( company_name = 'x' and (column_1 = @p or column_3 = @p) )
OR ( company_name <> 'x' and column_2 = @p )