MySQL - jak wybrać dane według długości łańcucha

302
SELECT * FROM table ORDER BY string_length(column);

Czy jest do tego funkcja MySQL (oczywiście zamiast string_length)?

Gal
źródło

Odpowiedzi:

491

Szukasz CHAR_LENGTH()liczby znaków w ciągu.

W przypadku wielobajtowych zestawów znaków podana LENGTH()zostanie liczba bajtów zajmowanych przez ciąg, a CHAR_LENGTH()zwróci liczba znaków.

hsz
źródło
139
W rzeczywistości CHAR_LENGTH () powinien być lepszym wyborem. W przypadku wielobajtowych zestawów znaków LENGTH () podaje liczbę bajtów zajmowanych przez łańcuch, a CHAR_LENGTH () zwraca liczbę znaków.
András Szepesházi
4
wybierz DŁUGOŚĆ („Ö”); wyniki 2 !! Odpowiedź Andrása Szepesháziego jest poprawna!
fubo
Prawidłowe jest przesłanie parametru na liczbę całkowitą CHAR_LENGTH, ponieważ jeśli zwrócę liczbę znaków? , por ejemplo CHAR_LENGTH(12)return2
DarkFenix
81
select * from table order by length(column);

Dokumentacja funkcji length (), a także wszystkich innych funkcji string jest dostępna tutaj .

Kaleb Brasee
źródło
27

Po zapoznaniu się z dokumentacją MySQL dla funkcji łańcuchowych, możemy również użyć CHAR_LENGTH()i CHARACTER_LENGTH().

NeverHopeless
źródło
3

Funkcja, której używam do znalezienia długości łańcucha, jest lengthużywana w następujący sposób:

SELECT * FROM table ORDER BY length(column);
Rito
źródło
1

Użyłem tego zdania do filtrowania

SELECT table.field1, table.field2 FROM table WHERE length(field) > 10;

możesz zmienić 10 na inny numer, który chcesz filtrować.

Jesús Sánchez
źródło
-2
select * from *tablename* where 1 having length(*fieldname*)=*fieldlength*

Przykład, jeśli chcesz wybrać od klienta wpis o nazwie krótszej niż 2 znaki.

select * from customer where 1 **having length(name)<2**
Levi Maier
źródło