Операторите за сравнение (включително <
и >
) "работи" със стойности на низове, както и с числа.
За MySQL
По подразбиране сравненията на низове не са чувствителни към малки и големи букви и използват текущия набор от знаци. По подразбиране е
latin1
(cp1252 West European), което работи добре и за английски.
Сравненията на низове ще бъдат чувствителни към малки и главни букви, когато съпоставянето на набор от символи на низовете, които се сравняват, е чувствително, т.е. името на набора от знаци завършва с _cs
вместо _ci
. Наистина няма смисъл да повтаряте цялата информация, която е налична в MySQL Reference Manual тук.
Справка за оператори за сравнение на MySQL:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Повече информация за MySQL набори от символи/колации:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
За да отговорите на конкретните въпроси, които сте задали:
В: това възможен ли е начин за сравняване на низове в SQL?
А: Да, както в MySQL, така и в SQL Server
В: и как действа?
А: Операторът за сравнение връща булев, TRUE, FALSE или NULL.
В: низ, по-малък от друг, идва преди в реда на речника? Например топката е по-малко от водата?
А: Да, тъй като 'b' идва преди 'w' в съпоставянето на набор от символи, изразът
'ball' < 'water'
ще върне TRUE. (Това зависи от набора от знаци и на сколекцията .
В: и това сравнение е чувствително към главни букви?
А: Дали дадено сравнение е чувствително към малки и големи букви или не зависи от сървъра на базата данни; по подразбиране и SQL Server, и MySQL не са чувствителни към главни букви.
В MySQL е възможно да се правят сравнения на низове, като се посочи съпоставяне на набор от символи, което е чувствително (името на набора от символи ще завършва с _cs, а не _ci)
В: Например BALL <вода, главният символ влияе ли на тези сравнения?
А: По подразбиране, както в SQL Server, така и в MySQL, изразът
'BALL' < 'water'
ще върне TRUE.