De vergelijkingsoperatoren (inclusief <
en >
) "werk" met zowel stringwaarden als getallen.
Voor MySQL
Stringvergelijkingen zijn standaard niet hoofdlettergevoelig en gebruiken de huidige tekenset. De standaard is latin1
(cp1252 West-Europees), wat ook goed werkt voor Engels.
Stringvergelijkingen zijn hoofdlettergevoelig wanneer de karaktersetsortering van de strings die worden vergeleken hoofdlettergevoelig is, d.w.z. de naam van de karakterset eindigt op _cs
in plaats van _ci
. Het heeft echt geen zin om alle informatie die beschikbaar is in de MySQL Reference Manual hier te herhalen.
Referentie voor MySQL-vergelijkingsoperators:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Meer informatie over MySQL-tekensets/collations:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
Om de specifieke vragen te beantwoorden die je hebt gesteld:
V: is dit een mogelijke manier om strings in SQL te vergelijken?
A: Ja, zowel in MySQL als in SQL Server
V: en hoe werkt het?
A: Een vergelijkingsoperator retourneert een boolean, ofwel TRUE, FALSE of NULL.
V: een string die kleiner is dan een andere komt eerder in woordenboekvolgorde? Bal is bijvoorbeeld minder dan water?
A: Ja, omdat 'b' voor 'w' komt in de verzameling van tekensets, is de uitdrukking
'ball' < 'water'
zal WAAR retourneren. (Dit hangt af van de tekenset en op de sortering .
V: en deze vergelijking is hoofdlettergevoelig?
A: Of een bepaalde vergelijking hoofdlettergevoelig is of niet, hangt af van de databaseserver; standaard zijn zowel SQL Server als MySQL hoofdletterongevoelig.
In MySQL is het mogelijk om stringvergelijkingen te maken door een karaktersetsortering op te geven die hoofdlettergevoelig is (de karaktersetnaam zal eindigen op _cs in plaats van _ci)
V: Bijvoorbeeld BALL
A: Standaard is in zowel SQL Server als MySQL de uitdrukking
zou WAAR retourneren. 'BALL' < 'water'