[SQL] != is gelijk aan <>?

Pagina: 1
Acties:
  • 3.390 views sinds 30-01-2008
  • Reageer

  • Markieman
  • Registratie: December 2001
  • Laatst online: 10:45
In een applicatie zit ik op dit moment tegen zowel Oracle 8i, als MS SQL 2000 te programmeren.
Dit levert de nodige problemen op, maar niets dat we niet aankunnen.

Omdat het niet zeker is met wat voor een databases we in de toekomst gaan werken (nieuwe MSSQL? nieuw oracle? misschien db2, mysql enz?) zit ik met een vraag.

Voor het kijken of een bepaald veld in de db ongelijk is aan de ander gebruiken we nu de operator != of <>. Tot nu toe krijgen we hierbij hetzelfde resultaat. Beide werken zowel in Oracle als in MSSQL.

Maar wat is nu het verschil tussen deze twee? Wat geniet de voorkeur in de toekomst, ook met het oog op andere DBMS-en? Misschien dat iemand hierover meer weet?

Tot nu toe ben ik op google en de search niet veel wijzer geworden.

Het Oracle in een Nutshell boek geeft mij het volgende:
code:
1
2
!=   Not equal to
<>  Either less than or greater than, but not equal to


Iemand een idee wat nu de juiste keuze is, en waarom?

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • JER00N
  • Registratie: Maart 2002
  • Niet online
Ik denk dat <> speciaal voor integers/floats is (less or greater than), terwijl != ook voor strings is. Maar een wezenlijk verschil is er denk ik niet qua interpretatie.

  • Narf109
  • Registratie: Juli 2001
  • Laatst online: 02-04 08:48
als je alleen integers vergelijkt zou ik alleen <> gebruiken

[ Voor 21% gewijzigd door Narf109 op 25-02-2005 12:06 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

!= wordt in sommige databaseprodukten helemaal niet ondersteund. Ik geloof zelfs dat <> wél in de sql-standaard staat en != niet...

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

!= werkt in ieder geval niet in Access, en ik meen mij te herinneren dat <> wel in de SQL standaard staat en != niet.

edit:

@ACM: GMTA :P

Als die klant niet gebeld had, hadden we waarschijnlijk tegelijkertijd hetzelfde gepost.

[ Voor 42% gewijzigd door AtleX op 25-02-2005 12:11 ]

Sole survivor of the Chicxulub asteroid impact.


  • whoami
  • Registratie: December 2000
  • Laatst online: 07-04 22:26
Waarom maak je niet voor iedere database die je ondersteunt een aparte data-access laag ?

https://fgheysels.github.io/


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
<> is de ansi standaard. Daar zou ik dan ook voor kiezen

  • Markieman
  • Registratie: December 2001
  • Laatst online: 10:45
whoami schreef op vrijdag 25 februari 2005 @ 12:14:
Waarom maak je niet voor iedere database die je ondersteunt een aparte data-access laag ?
Dat is op zich een goede. Maar het gaat hier om een applicatie die oorspronkelijk alleen op MSDE bedoelt is. De applicatie is in de loop der tijd (een jaar of 5) gigantisch gegroeid, waardoor de implementatie van zo'n data-access laag veel tijd zou kosten. Deze tijd is op dit moment gewoonweg niet beschikbaar. Er is echter wel gepland dat over een jaar, of misschien twee, de gehele applicatie opnieuw ontworpen en gebouwd gaat worden. Dan zou deze optie zeker meegenomen worden.

Verder blijf ik dan gewoon bij de <>-operator. Ik dank iedereen voor de reacties

Kan iemand mij, omdat ik het graag wil weten, het verschil tussen de twee definieties uit mijn Oracle-boek uitleggen?

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Markieman schreef op vrijdag 25 februari 2005 @ 12:21:
[...]

Kan iemand mij, omdat ik het graag wil weten, het verschil tussen de twee definieties uit mijn Oracle-boek uitleggen?
Ik vermoed iets met NULLs, alhoewel NULL officieel ongelijk is aan alles incluis NULL :)

Professionele website nodig?


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Markieman schreef op vrijdag 25 februari 2005 @ 12:21:
[...]


Dat is op zich een goede. Maar het gaat hier om een applicatie die oorspronkelijk alleen op MSDE bedoelt is. De applicatie is in de loop der tijd (een jaar of 5) gigantisch gegroeid, waardoor de implementatie van zo'n data-access laag veel tijd zou kosten. Deze tijd is op dit moment gewoonweg niet beschikbaar. Er is echter wel gepland dat over een jaar, of misschien twee, de gehele applicatie opnieuw ontworpen en gebouwd gaat worden. Dan zou deze optie zeker meegenomen worden.
Misschien een gekke vraag, als de applicatie ontworpen is op/met MSDE. Dan zou hij zonder aanpassingen naar MSSQL geport moeten kunnen worden. Waarom zou je dan de Oracle oplossing kiezen?

Ik heb zelf nog nooit met MSDE gewerkt, dus ik weet niet of het bovenstaande helemaal waar is. :D
Maar ik heb begrepen dat MSDE het kleine (uitgeklede) broertje van MSSQL is.

Programmer - an organism that turns coffee into software.


  • Markieman
  • Registratie: December 2001
  • Laatst online: 10:45
MSDE is kleine versie van MSSQL (performance is gegarandeerd met max 5 concurrent users d8 ik). Maar we hebben ook klanten die vragen om Oracle. Hij moet dus beide ondersteunen. In toekomstige situaties kan het zijn dat er klanten zijn die een ander DBMS gebruiken. Voldoen wij daar niet aan, dan is er geen klant...

[ Voor 30% gewijzigd door Markieman op 25-02-2005 12:39 ]

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

curry684 schreef op vrijdag 25 februari 2005 @ 12:29:
Ik vermoed iets met NULLs, alhoewel NULL officieel ongelijk is aan alles incluis NULL :)
Volgens mij zit er geen verschil tussen de twee in functionaliteit, alleen in de intentie van de tekentjes en dus de mate van ondersteuning door DBMS's.

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Markieman schreef op vrijdag 25 februari 2005 @ 12:39:
MSDE is kleine versie van MSSQL (performance is gegarandeerd met max 5 concurrent users d8 ik). Maar we hebben ook klanten die vragen om Oracle. Hij moet dus beide ondersteunen. In toekomstige situaties kan het zijn dat er klanten zijn die een ander DBMS gebruiken. Voldoen wij daar niet aan, dan is er geen klant...
Ik weet niet, waarin en wat voor applicatie je maakt, het zal denk ik ook niet uitmaken, maar je kan dan toch gewoon DB classes gebruiken? Zoals in PHP bijvoorbeeld de Pear::DB classes? Dan hoef je namelijk alleen maar het type DB op te geven, rest doet die class dan voor je...

Nadeel is wel, dat het trager is, dan gelijk de SQL in te kloppen, omdat het een extra layer is, tussen alles in. Plus dat je dan in je query's standaard ANSI SQL moet gebruiken, rest doet die class dan dus voor je... ;) En dan hoef je opeens veel minder naar je query's te kijken :)

[ Voor 23% gewijzigd door CH4OS op 25-02-2005 15:11 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

ACM schreef op vrijdag 25 februari 2005 @ 14:55:
[...]

Volgens mij zit er geen verschil tussen de twee in functionaliteit, alleen in de intentie van de tekentjes en dus de mate van ondersteuning door DBMS's.
Ik probeerde enkel de Oracle-omschrijving te begrijpen :)

Professionele website nodig?


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 27-03 16:52
<> is kleiner of groter. Voor niet-geordende sets is dat een onzinnige relatie. Is 2 maart groter of kleiner dan 2 mei? Het is in elk geval ongelijk.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

GJ-tje schreef op vrijdag 25 februari 2005 @ 15:10:
Nadeel is wel, dat het trager is, dan gelijk de SQL in te kloppen, omdat het een extra layer is, tussen alles in. Plus dat je dan in je query's standaard ANSI SQL moet gebruiken, rest doet die class dan dus voor je... ;) En dan hoef je opeens veel minder naar je query's te kijken :)
Nadeel van alles in ANSI-sql doen is dat je allerlei platform specifieke dingen juist niet kan gebruiken, lijkt me?.
LIMIT/OFFSET is een leuke die veel gebruikt wordt bij MySQL en PostgreSQL maar aardig anders werkt in Oracle.
MSalters schreef op vrijdag 25 februari 2005 @ 15:29:
<> is kleiner of groter. Voor niet-geordende sets is dat een onzinnige relatie. Is 2 maart groter of kleiner dan 2 mei? Het is in elk geval ongelijk.
Volgens mij beschouwen we tijd als schaalverdeling met de diverse relaties die nodig zijn om "ouder" en "jonger" te vertellen. Bij afwezigheid van een jaartal wordt er meestal van uit gegaan dat ze uit hetzelfde jaar komen (verjaardagen bijvoorbeeld) ;)

Anyway, de <> is gewoon een andere manier van "niet gelijk aan" zeggen en in ik gok dat je in elke standaard wel dingen kan aanwijzen die niet zo handig gedaan zijn.
Punt blijft dat de <> in de standaard zit en != niet, dus die eerste zou een tikje veiliger moeten zijn :)

[ Voor 41% gewijzigd door ACM op 25-02-2005 15:32 ]


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

ACM schreef op vrijdag 25 februari 2005 @ 15:29:
Nadeel van alles in ANSI-sql doen is dat je allerlei platform specifieke dingen juist niet kan gebruiken, lijkt me?.
LIMIT/OFFSET is een leuke die veel gebruikt wordt bij MySQL en PostgreSQL maar aardig anders werkt in Oracle.
Wat je in het begin zegt, dat is inderdaad waar, je moet dan idd functionaliteiten van je DB software (MySQL, Oracle, etc.) inleveren... Aangezien je je dan aan de SQL-standaard (Ik meen me te herinneren, dat dat de ANSI-SQL is... :) Correct me if I'm wrong... )houdt.

Voordeel is wel, dat je makkelijk(er) kan overschakelen naar andere databases, of meerde 'soorten' (MySQL, PostgreSQL, MSSQL, Oracle, etc.) tegelijk kan gaan gebruiken...

[ Voor 8% gewijzigd door CH4OS op 25-02-2005 15:54 ]


  • Sebazztiaan
  • Registratie: Februari 2002
  • Laatst online: 17-12-2025

Sebazztiaan

sebas!

En anders kan je ook nog NOT gebruiken, die werkt iig in MSSQL
Pagina: 1