Jämförelseoperatorerna (inklusive <
och >
) "arbeta" med såväl strängvärden som siffror.
För MySQL
Som standard är strängjämförelser inte skiftlägeskänsliga och använder den aktuella teckenuppsättningen. Standard är
latin1
(cp1252 West European), vilket också fungerar bra för engelska.
Strängjämförelser är skiftlägeskänsliga när teckenuppsättningssammanställningen av strängarna som jämförs är skiftlägeskänslig, dvs. namnet på teckenuppsättningen slutar på _cs
istället för _ci
. Det är verkligen ingen mening att upprepa all information som finns i MySQL Reference Manual här.
MySQL Comparison Operators Reference:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Mer information om MySQL-teckenuppsättningar/kollationer:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
För att svara på de specifika frågorna du ställde:
F: är detta ett möjligt sätt att jämföra strängar i SQL?
Svar: Ja, i både MySQL och SQL Server
F: och hur fungerar det?
Svar: En jämförelseoperator returnerar en boolean, antingen TRUE, FALSE eller NULL.
F: en sträng mindre än en annan kommer före i ordboksordning? Till exempel är bollen mindre än vatten?
Svar: Ja, eftersom 'b' kommer före 'w' i teckenuppsättningen, uttrycket
'ball' < 'water'
kommer att returnera TRUE. (Detta beror på teckenuppsättningen och på sorteringen .
F: och den här jämförelsen är skiftlägeskänslig?
Svar: Huruvida en viss jämförelse är skiftlägeskänslig eller inte beror på databasservern; som standard är både SQL Server och MySQL skiftlägesokänsliga.
I MySQL är det möjligt att göra strängjämförelser genom att ange en teckenuppsättningskollation som är skiftlägeskänslig (teckenuppsättningens namn kommer att sluta med _cs snarare än _ci)
F: Till exempel BALL
Svar: Som standard, i både SQL Server och MySQL, uttrycket
skulle returnera TRUE. 'BALL' < 'water'