Tabela uczniowie zawiera kolumnę tekstową nazwisko. Co zwróci zapytanie SELECT MIN(nazwisko) FROM uczniowie;?
MIN zwraca wartość pierwszą w kolejności sortowania, czyli alfabetycznie.MIN działa także na tekstach i datach, nie tylko na liczbach.Funkcja MIN nie ogranicza się do liczb. Porównuje wartości kolumny tak samo jak przy sortowaniu ORDER BY, więc dla tekstu zwraca wartość, która stałaby na początku listy posortowanej alfabetycznie. Dla nazwisk Nowak, Adamczyk i Zając wynikiem będzie Adamczyk.
O tym, jak traktowane są polskie litery i wielkość liter, decyduje sposób porównywania napisów ustawiony w bazie (collation), na przykład utf8mb4_polish_ci, w którym „Ł” stoi po „L”. Analogicznie MAX zwróci nazwisko ostatnie w kolejności alfabetycznej, a obie funkcje działają też na datach, zwracając najwcześniejszą i najpóźniejszą.
Ta właściwość przydaje się na przykład przy szukaniu najwcześniejszej daty zamówienia.
Ten wynik zaskakuje, bo nazwa funkcji kojarzy się z liczbami. Częsty błąd to założenie, że MIN na tekście zgłosi błąd. W MySQL funkcja działa na każdym typie, który da się porównać, w tym na tekstach i datach.
Druga pułapka to myślenie o „najmniejszym” jako o najkrótszym. Długość napisu nie ma tu znaczenia: Łoś jest krótszy od Adamczyk, ale alfabetycznie stoi dalej. Do długości służy CHAR_LENGTH(), a najkrótsze nazwisko trzeba by wybrać inaczej, na przykład sortując po CHAR_LENGTH(nazwisko).
Funkcja nie zagląda też do innych kolumn, w tym do identyfikatora. MIN(nazwisko) porównuje wyłącznie nazwiska i zwraca to, które przy sortowaniu rosnącym znalazłoby się na początku.
Zanim użyjesz tej funkcji na kolumnie tekstowej, warto więc sprawdzić, jakie porównywanie napisów ustawiono w tabeli.