SQL predicaten in Access2003 anders dan SQL standaard?

Status
Niet open voor verdere reacties.

dnties

Tera Honourable Senior Member †
Lid geworden
7 sep 2006
Berichten
36.481
Hallo allemaal.

Ik ben bezig SQL programmering te leren, maar ik loop in MS Access2003 tegen 'vaagheden' aan.

Zie deze pagina waar ik wat zaken van aan het oefenen ben.
Als ik in Noordenwind.mdb de volgende query uitvoer
SELECT Bedrijf, Contactpersoon
FROM Klanten
WHERE Bedrijf > 'g';

dan presenteert Access mij óók bedrijven die in het veld Bedrijf beginnen met een 'g' of 'G', zoals 'Galería del gastrónomo'
Access doet de query dus anders dan op die webpagina en lijkt het te interpreteren als 'groter of gelijk aan g'.

Het maakt hierbij ook niet uit of ik daarbij in Extra -> Opties -> Tabellen/query's de compatibiliteit op SQL ANSI 92 zet voor de database: Het resultaat is hetzelfde.

Op die genoemde webpagina worden braaf alle bedrijven die beginnen met 'a' t/m 'g' niet getoond als de juiste engelstalige query daar geplakt wordt in het tekstveldje en gekozen wordt voor "See the results". Dat is het door mij verwachte resultaat, maar Access geeft mij andere uitvoer (zie boven).

Heeft iemand een verklaring hiervoor, of doe/denk ik iets fout?

Alvast bedankt. :thumb:

Tijs.
 
Laatst bewerkt:
Hoi Tijs,

Ik ben bang dat ik je een beetje de werking van het alfabet moet uitleggen :p

Volgens mij geeft die website hetzelfde resultaat als je Nederlandse query. Als ik
[SQL]SELECT * FROM customers
WHERE CompanyName > 'g'[/SQL]
uitvoer staat 'Galería del gastrónomo' gewoon bij de resultaten. En terecht.

Jij denkt (onterecht) dat de where-clause alleen naar de eerste letter van de bedrijfsnaam kijkt, maar de vergelijking wordt gedaan met de hele string. En 'Galería del gastrónomo' is gewoonweg verder in het alfabet dan 'g'.

Kijk ter illustratie maar in een willekeurig woordenboek. Zie bijv http://woordenlijst.org/voorvoegsel/g. Hier zie je eerst de g (met niks erachter), daarna woorden die beginnen met een g en dan een zooi a's, etc. En al die woorden komen dus na 'g', dus voldoen ze aan de WHERE-clause.

Snap je?

Grt,
plagvreugd.
 
Ik heb verkeerd gelezen, zie ik nu :eek:
De query op de webpagina is uitgebreider dan ik gebruikt heb in Access. Op de webpagina staat nl. nog de extra clausule
AND ContactName > 'g'
erbij.

Als ik die extra clausule eraf laat op die webpagina, dan krijg ik daar óók 'Galería del gastrónomo' vermeld in de uitvoer, net zoals in Access2003.

Ik had me zand in mijn ogen laten strooien door bovenstaande foute lezing en daardoor 'geconcludeerd' dat het alleen om het eerste karakter zou gaan in de bepaling waar/onwaar voor een conditie waar getest wordt met 1 karakter.

@plagvreugd: Bedankt voor je reactie en uitleg. :thumb:

Ik zal deze discussie afsluiten. Allemaal bedankt.

Tijs.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan