The difference between 'AND' and '&&' in SQL
For mySQL: The manual is not saying it explicitly, but they are listed as identical:
AND, &&
Logical AND. Evaluates to 1 if all operands are nonzero and not NULL, to 0 if one or more operands are 0, otherwise NULL is returned.
The operator precedence page also makes no distiction.
Oracle SQL - Difference between AND & OR operators
AND operator mean both (department_id = 10) is TRUE also (Department_ID = 20 ) is TRUE, result is TRUE
OR operator mean either (department_id = 10) is TRUE or (Department_ID = 20 ) is TRUE, result is TRUE
What is the differences between & and && in EF Core
but what about EF? Is there any differences between & and && (same for | and ||)? performance-wise!
Yes, there is.
First, sometimes EF Core uses client evaluation, so it can't be short-circuited.
Second, even when using server evaluation, EF Core translates them differently. For instance, here is the translation for SqlServer:
LINQ SQL
============== ============
expr1 && expr2 expr1 AND expr2
expr1 & expr2 (expr1 & expr2) = 1
Whether this affects the performance depends of the database query optimizer, but the first looks generally better. And some database providers which has no native support for bool
type might generate quite inefficient translation or even fail to translate the &
/ |
predicates.
Shortly, preferably always use logical &&
and ||
operators in LINQ queries.
Is there a difference between and vs AND
MySQL is not case sensitive, at least for keywords
oracle sql - using double ampersand (&&) and double dot (..)
@Gary_W has covered the difference between a single and a double ampersand.
The double period is perhaps slightly less obvious. From the SQL*Plus documentation:
If you wish to append characters immediately after a substitution variable, use a period to separate the variable from the character.
If you had a single period:
&&DATABASE_ONE.TABLE_ONE
then that period would be treated as the terminator for the substituion variable name, and would be consumed in the process. Say the value you entered was 'HR'; the substitution would be:
old:select &&DATABASE_ONE.TABLE_ONE from dual
new:select HRTABLE_ONE from dual
select HRTABLE_ONE from dual
As you can see, there is now no period between the schema and table names, giving you a combined identifier which will not represent what you intended.
With the form you have:
&&DATABASE_ONE..TABLE_ONE
the second period is the 'normal' one that sits between those two elements; once the first has been consumed by the substitution, the second remains to fulfil that function:
old:select &&DATABASE_ONE..TABLE_ONE from dual
new:select HR.TABLE_ONE from dual
select HR.TABLE_ONE from dual
What is the difference between & and && in Java?
& <-- verifies both operands
&& <-- stops evaluating if the first operand evaluates to false since the result will be false
(x != 0) & (1/x > 1)
<-- this means evaluate (x != 0)
then evaluate (1/x > 1)
then do the &. the problem is that for x=0 this will throw an exception.
(x != 0) && (1/x > 1)
<-- this means evaluate (x != 0)
and only if this is true then evaluate (1/x > 1)
so if you have x=0 then this is perfectly safe and won't throw any exception if (x != 0) evaluates to false the whole thing directly evaluates to false without evaluating the (1/x > 1)
.
EDIT:
exprA | exprB
<-- this means evaluate exprA
then evaluate exprB
then do the |
.
exprA || exprB
<-- this means evaluate exprA
and only if this is false
then evaluate exprB
and do the ||
.
Related Topics
SQL for Ordering by Number - 1,2,3,4 etc Instead of 1,10,11,12
Concat All Column Values in SQL
Update Multiple Rows with One Query
Redundant Data in Update Statements
In SQL How to Get the Maximum Value for an Integer
Check Whether String Is a Date Postgresql
SQL Server for Xml Path Make Repeating Nodes
Converting Select Results into Insert Script - SQL Server
How to Batch SQL Statements with Package Database/Sql
SQL Update Fields of One Table from Fields of Another One
Division (/) Not Giving My Answer in Postgresql
How to Generate Ranks in MySQL
Finding a Top Level Parent in SQL
Hql: How to Perform an Inner Join on a Subquery
Conditional Lead/Lag Function Postgresql
Operation Not Allowed When the Object Is Closed When Running More Advanced Query