Sammenligningsoperatorerne (inklusive <
og >
) "arbejde" med strengværdier såvel som tal.
Til MySQL
Som standard skelnes der ikke mellem store og små bogstaver i strengsammenligninger og bruger det aktuelle tegnsæt. Standarden er latin1
(cp1252 West European), som også fungerer godt til engelsk.
Strengsammenligninger vil være følsomme for store og små bogstaver, når tegnsætsorteringen af de strenge, der sammenlignes, er store og små bogstaver, dvs. navnet på tegnsættet ender på _cs
i stedet for _ci
. Der er virkelig ingen mening i at gentage al den information, der er tilgængelig i MySQL Reference Manual her.
MySQL Comparison Operators Reference:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Flere oplysninger om MySQL-tegnsæt/kollationer:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
For at besvare de specifikke spørgsmål, du stillede:
Sp: er dette en mulig måde at sammenligne strenge i SQL?
A: Ja, i både MySQL og SQL Server
Sp: og hvordan virker det?
A: En sammenligningsoperator returnerer en boolean, enten SAND, FALSK eller NULL.
Sp: en streng mindre end en anden kommer før i ordbogsrækkefølge? For eksempel er bolden mindre end vand?
A: Ja, fordi 'b' kommer før 'w' i tegnsætsorteringen, udtrykket
'ball' < 'water'
vil returnere TRUE. (Dette afhænger af tegnsættet og på sorteringen .
Sp: og denne sammenligning skelner mellem store og små bogstaver?
A: Hvorvidt en bestemt sammenligning skelner mellem store og små bogstaver eller ej, afhænger af databaseserveren; som standard er både SQL Server og MySQL ufølsomme mellem store og små bogstaver.
I MySQL er det muligt at lave strengsammenligninger ved at angive en tegnsætsortering, der er følsom over for store og små bogstaver (navnet på tegnsættet ender med _cs i stedet for _ci)
Sp: For eksempel BALL
A: Som standard er udtrykket
ville returnere TRUE. 'BALL' < 'water'