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)?

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.


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 .



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);

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ć.


-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**
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.