Spi*_*ike 5 java sql conditional plsql if-statement
在Java中
int a = 10,b = 10;
if (a == 10 || b==10)
{
// first condition (a==10) is true, so it wont check further
}
Run Code Online (Sandbox Code Playgroud)
但是,在SQL中,
select * from my table where a = 10 or b = 10;
--As per my understanding, It should return data only based on a.
--But it returns both entries.
Run Code Online (Sandbox Code Playgroud)
这是为什么?
您正在描述提前终止 - 这意味着仅在答案未知时才执行第二条语句,但它不会改变结果(除非您在第二条语句中执行表达式)。
因此a == 10 || b == 10将导致 a 或 b 为 10 或 a 和 b 为 10 的任何结果。或更准确地说...
a = 10
b = 10
Run Code Online (Sandbox Code Playgroud)
或者
a = 10
b = 0
Run Code Online (Sandbox Code Playgroud)
或者
a = 0
b = 10
Run Code Online (Sandbox Code Playgroud)
如果 a 恰好是 10,那么您实际上不需要检查 b - 但某些语言仍然需要检查。