Operatory porównania (w tym <
i >
) "pracuj" z wartościami łańcuchowymi oraz liczbami.
Dla MySQL
Domyślnie porównania ciągów nie uwzględniają wielkości liter i używają bieżącego zestawu znaków. Wartość domyślna to latin1
(cp1252 West European), który działa również dobrze w języku angielskim.
Porównania ciągów będą rozróżniać wielkość liter, gdy sortowanie zestawu znaków porównywanych ciągów jest rozróżniane, tj. nazwa zestawu znaków kończy się na _cs
zamiast _ci
. Naprawdę nie ma sensu powtarzać tutaj wszystkich informacji dostępnych w podręczniku MySQL Reference Manual.
Dokumentacja operatorów porównania MySQL:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Więcej informacji o zestawach znaków/sortowaniach MySQL:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
Aby odpowiedzieć na konkretne zadane pytania:
P: czy jest to możliwy sposób porównywania ciągów w SQL?
O: Tak, zarówno w MySQL, jak i SQL Server
P: i jak to działa?
O: Operator porównania zwraca wartość logiczną TRUE, FALSE lub NULL.
P: ciąg znaków mniejszy niż inny występuje w kolejności słownikowej? Na przykład piłka jest mniejsza niż woda?
O: Tak, ponieważ „b” występuje przed „w” w zestawieniu zestawu znaków, wyrażenie
'ball' < 'water'
zwróci TRUE. (To zależy od zestawu znaków i na porównaniu .
P: a to porównanie uwzględnia wielkość liter?
O: To, czy w konkretnym porównaniu jest rozróżniana wielkość liter, czy nie, zależy od serwera bazy danych; domyślnie zarówno SQL Server, jak i MySQL nie rozróżniają wielkości liter.
W MySQL możliwe jest dokonywanie porównań ciągów znaków, określając sortowanie zestawu znaków, w którym rozróżniana jest wielkość liter (nazwa zestawu znaków będzie kończyć się na _cs zamiast _ci)
P: Na przykład KULA
O: Domyślnie, zarówno w SQL Server, jak i MySQL, wyrażenie
zwróci TRUE. 'BALL' < 'water'