Operátory porovnání (včetně <
a >
) "pracovat" s hodnotami řetězců i s čísly.
Pro MySQL
Ve výchozím nastavení se při porovnávání řetězců nerozlišují velká a malá písmena a používá se aktuální znaková sada. Výchozí hodnota je
latin1
(cp1252 West European), který také dobře funguje pro angličtinu.
Porovnávání řetězců bude rozlišovat velká a malá písmena, pokud se při řazení znakové sady porovnávaných řetězců rozlišují velká a malá písmena, tj. název znakové sady končí na _cs
spíše než _ci
. Opravdu nemá smysl opakovat všechny informace, které jsou k dispozici v referenční příručce MySQL zde.
Reference operátorů porovnání MySQL:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Více informací o MySQL Charactersets/collations:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
Chcete-li odpovědět na konkrétní otázky, které jste položili:
Otázka: je to možný způsob, jak porovnat řetězce v SQL?
Odpověď: Ano, v MySQL i SQL Server
Otázka: a jak to působí?
Odpověď: Operátor porovnání vrací logickou hodnotu, buď TRUE, FALSE nebo NULL.
Otázka: řetězec, který je menší než jiný, předchází ve slovníkovém pořadí? Například míč je méně než voda?
Odpověď: Ano, protože 'b' je před 'w' v řazení znakové sady, tedy výraz
'ball' < 'water'
vrátí TRUE. (To závisí na znakové sadě a na souboru .
Otázka: a toto srovnání rozlišuje malá a velká písmena?
Odpověď: Zda konkrétní srovnání rozlišuje malá a velká písmena, závisí na databázovém serveru; ve výchozím nastavení SQL Server i MySQL nerozlišují malá a velká písmena.
V MySQL je možné provádět porovnávání řetězců zadáním řazení znakové sady, která rozlišuje malá a velká písmena (název znakové sady bude končit _cs spíše než _ci)
Otázka: Například BALL
Odpověď: Ve výchozím nastavení je v SQL Server i MySQL výraz
vrátí TRUE. 'BALL' < 'water'