Gli operatori di confronto (incluso <
e >
) "funziona" con valori di stringa e numeri.
Per MySQL
Per impostazione predefinita, i confronti tra stringhe non fanno distinzione tra maiuscole e minuscole e utilizzano il set di caratteri corrente. L'impostazione predefinita è latin1
(cp1252 Europa occidentale), che funziona bene anche per l'inglese.
I confronti tra stringhe faranno distinzione tra maiuscole e minuscole quando il confronto del set di caratteri delle stringhe da confrontare fa distinzione tra maiuscole e minuscole, ovvero il nome del set di caratteri termina con _cs
anziché _ci
. Non ha davvero senso ripetere tutte le informazioni disponibili nel Manuale di riferimento di MySQL qui.
Riferimento per gli operatori di confronto MySQL:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Maggiori informazioni sui set di caratteri/collations MySQL:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
Per rispondere alle domande specifiche che hai posto:
D: è questo un modo possibile per confrontare le stringhe in SQL?
R: Sì, sia in MySQL che in SQL Server
D: e come agisce?
R: Un operatore di confronto restituisce un valore booleano, TRUE, FALSE o NULL.
D: una stringa in meno di un'altra viene prima nell'ordine del dizionario? Ad esempio, la palla è meno dell'acqua?
R: Sì, perché 'b' viene prima di 'w' nelle regole di confronto del set di caratteri, l'espressione
'ball' < 'water'
restituirà VERO. (Questo dipende dal set di caratteri e sulla collazione .
D: e questo confronto fa distinzione tra maiuscole e minuscole?
R: Il fatto che un particolare confronto faccia distinzione tra maiuscole e minuscole o meno dipende dal server di database; per impostazione predefinita, sia SQL Server che MySQL non fanno distinzione tra maiuscole e minuscole.
In MySQL è possibile effettuare confronti tra stringhe specificando un confronto del set di caratteri che fa distinzione tra maiuscole e minuscole (il nome del set di caratteri terminerà con _cs anziché _ci)
D: Ad esempio BALL
R: Per impostazione predefinita, sia in SQL Server che in MySQL, l'espressione
restituirebbe VERO. 'BALL' < 'water'