Am văzut "SQL", care utilizează atât !=
și `<> pentru egal. Ceea ce este preferat de sintaxă și de ce?
Îmi place !=
, pentru că <>
mi aduce aminte de Visual Basic`.
Cele mai multe baze de date suport !=
(populare limbaje de programare) și <>
(ANSI).
Baze de date care să sprijine atât !=
și <>
:
!=
și <>
!=
și <>
!=
și <>
!=
și <>
!=
și <>
!=
și <>
!=
și <>
!=
și <>
!=
și <>
Bazele de date care acceptă standardul ANSI operator, exclusiv:
Din punct de vedere tehnic ca acestea să funcționeze la fel dacă utilizați SQL Server AKA T-SQL. Daca're folosind-o în proceduri stocate nu există nici o performanță motiv pentru a utiliza unul peste celălalt. Apoi se reduce la o preferință personală. Eu prefer să folosesc <> cum este ANSI conforme.
Puteți găsi link-uri la diverse ANSI la...
'<>'
este de la SQL-92 standard și'!='
este o de proprietate T-SQL operator. L's disponibil în alte baze de date, precum și, dar din moment ce e't standard trebuie să-l ia de la caz la caz.
În cele mai multe cazuri,'ll știu ce date te're conectarea la asta't într-adevăr o problemă. În cel mai rău caz s-ar putea avea de a face o căutare și înlocuiți în SQL.
ANSI SQL Standard definește `<> ca "nu este egal cu" operator,
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (5.2 <semn> și <separator>
)
Nu există nici o !=
operator în conformitate cu ANSI/SQL 92 standard.
<>
este valid SQL în funcție de SQL-92 standard.
http://msdn.microsoft.com/en-us/library/aa276846(SQL.80).aspx
Ei're atât de valabil și aceeași cu privire la SQL Server,
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation
Se pare că Microsoft se prefer <>
a !=
după cum reiese în tabelul de constrângeri. Eu personal prefer să folosesc !=
pentru că, evident, am citit ca "nu este egal", dar dacă introduceți [field1 != domeniu2] și salvați-l ca un constrait, la următoarea interogare, acesta va apărea ca
[field1 <> domeniu2]. Asta-mi spune că modul corect de a face asta este de
<>`.
!=
, în ciuda faptului că non-ANSI, este mai mult în adevăratul spirit al SQL ca limbaj ușor de citit. Ea tipa nu este egal.
<>
spune's a-mi (mai puțin decât, mai mare decât), care este doar ciudat. Știu că intenția este de a-l's fie mai mic sau mai mare decât prin urmare, nu este egal, dar care's un mod complicat de a spune ceva foarte simplu.
Am'am avut de a lua niște timp interogări SQL și puneți-le cu dragoste într-un fișier XML pentru o grămadă de motive stupide am castigat't du-te în.
Este suficient să spun XML nu este cu <> la toate și am avut de a schimba-le pentru a
!=` și verificați eu înainte de a riggedy naufragiat.
O alternativă ar fi utilizarea NULLIF alt operator decât <> "sau"! =
care returnează NULL dacă cele două argumente sunt egale NULLIF în Microsoft Docs. Așa că eu cred că în cazul în CARE clauza poate fi modificată de <> "și"! =
după cum urmează:
NULLIF(arg1, arg2) IS NOT NULL
Așa cum am constatat că, folosind <> "și"! =
nu't de lucru pentru data în unele cazuri. Prin urmare, folosind expresia de mai sus face ceea ce e necesar.
Ambele sunt acceptate în T-SQL. Cu toate acestea, se pare că se utilizează <>
funcționează mult mai rapid decât !=
. Am fugit un complex de interogare care a fost folosit !=
, și-a luat aproximativ 16 secunde în medie pentru a rula. Am schimbat cei de `<> și interogarea acum nevoie de aproximativ 4 secunde în medie pentru a rula. Ca's o îmbunătățire uriașă!
Deși acestea funcționează în același mod, !=
înseamnă exact "nu este egal cu", în timp ce <>
înseamnă mai mult și mai puțin decât valoarea stocată.
Consider >= " sau " <=
, iar acest lucru va face sens atunci când factoring în indici la întrebări... <>
va rula mai repede, în unele cazuri (cu dreptul de index), dar în alte cazuri (indicele gratuit) vor rula la fel.
Acest lucru, de asemenea, depinde de modul în bazele de date, sistemul citește valorile !=
și <>
. Baza de date furnizor poate doar shortcut și le face să funcționeze la fel, deci nu e't orice beneficiu, fie un fel.PostgreSQL și SQL Server nu de comenzi rapide; este citit, așa cum apare mai sus.