Le tri naturel élégant de MySQL
Dans MySQL, trier logiquement les chaînes contenant des chiffres et des lettres peut être un défi. Prenons l'exemple d'ensemble de données suivant :
<code>最终幻想 最终幻想4 最终幻想10 最终幻想12 最终幻想12:普罗米西亚的锁链 最终幻想冒险 最终幻想起源 最终幻想战术</code>
Comment obtenir un ordre naturel pour que Final Fantasy 10 apparaisse après Final Fantasy 4 au lieu d'avant Final Fantasy 2 ?
Solution élégante
Au lieu d'analyser manuellement le nom du jeu en ses composants (titre, numéro, sous-titre), essayez cette solution simple :
<code class="language-sql">SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric;</code>
Cela fonctionne comme suit :
LENGTH()
compte le nombre de caractères dans chaque champ alphanumérique. ORDER BY
trie d'abord les lignes par ordre croissant de longueur. Cela regroupe efficacement les lignes avec le même nombre de caractères. Cette méthode gère de manière transparente les titres de jeux contenant des chiffres et du texte, garantissant un ordre naturel qui répond à vos exigences. Il évite les tracas de l'analyse manuelle et est tout aussi robuste même lors de la gestion d'exceptions telles que "Warhammer 40,000" et "James Bond 007".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!