MySQL - Comment sélectionner des données par longueur de chaîne

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

Existe-t-il une fonction MySQL pour faire cela (bien sûr au lieu de string_length)?

Fille
la source

Réponses:

492

Vous recherchez pour CHAR_LENGTH()obtenir le nombre de caractères dans une chaîne.

Pour les jeux de caractères multi-octets, vous LENGTH()obtiendrez le nombre d'octets que la chaîne occupe, tandis que vous renverrez CHAR_LENGTH()le nombre de caractères.

hsz
la source
139
En fait, CHAR_LENGTH () devrait être un meilleur choix. Pour les jeux de caractères multi-octets, LENGTH () vous donnera le nombre d'octets que la chaîne occupe, tandis que CHAR_LENGTH () renverra le nombre de caractères.
András Szepesházi
4
sélectionnez LONGUEUR («Ö»); résultats 2 !! La réponse d'András Szepesházi est la bonne!
fubo
Il est correct d'envoyer un paramètre entier à CHAR_LENGTH, car si je retourne le nombre de caractères? , por ejemplo CHAR_LENGTH(12)return2
DarkFenix
81
select * from table order by length(column);

La documentation sur la fonction length (), ainsi que toutes les autres fonctions de chaîne, est disponible ici .

Kaleb Brasee
la source
27

En jetant un œil à la documentation MySQL pour les fonctions de chaîne, nous pouvons également utiliser CHAR_LENGTH()et CHARACTER_LENGTH()aussi.

NeverHopeless
la source
3

La fonction que j'utilise pour trouver la longueur de la chaîne est lengthutilisée comme suit:

SELECT * FROM table ORDER BY length(column);
Rito
la source
1

J'ai utilisé ces phrases pour filtrer

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

vous pouvez changer 10 pour un autre nombre que vous souhaitez filtrer.

Jesús Sánchez
la source
-2
select * from *tablename* where 1 having length(*fieldname*)=*fieldlength*

Exemple si vous souhaitez sélectionner dans le client les entrées avec un nom plus court que 2 caractères.

select * from customer where 1 **having length(name)<2**
Levi Maier
la source