我的sql:添加条件在wery语句中



我想从同一sp中选择所有客户或一个客户。现在,我们正在拨出两个SP,以获取这些详细信息:

即。吸引所有客户:

select id, name from customers

和一个客户:

select id, name from customers
where id=id_from_input

为了使它们普遍,我认为将id_from_input视为无效,以吸引所有客户。我尝试了几种方法来制作一种有条件的方法,即我的SQL中的声明可以与该计划一起使用,但没有任何作用。例如:

select id, name from customers
where if(id_from_input <> null) id=id_from_input; end if

给我语法错误。

如何制作一个where子句,该子句在id_from_input为null时返回所有行,否则匹配行?

表达式 x <> null永远不正确;您只能使用is nullis not null来测试NULL。纠正您的尝试给出:

select id, name from customers
where id_from_input is null or id = id_from_input

或更简短的东西(和恕我直言):

select id, name from customers
where id = coalesce(id_from_input, id)

用例语句实现您的结果:

SELECT id, name FROM customers WHERE id = CASE WHEN ISNULL(id_from_input,'') 
<> '' THEN id_from_input ELSE id END

尝试使用or

select id, name
from customers
where id_from_input is null or id = id_from_input

如果id_from_input为null,则or子句将不会计算。

尝试此查询

select id, name from customers where CASE WHEN id_from_input<>null THEN id=id_from_input ELSE id END

相关内容

  • 没有找到相关文章

最新更新