Requête MySQL pour convertir un texte partiellement non numérique en nombre
Dans MySQL, il est possible d'extraire la partie numérique d'un texte non numérique et convertissez-le en un type de données numérique pour permettre un tri approprié.
Considérons le cas d'une colonne contenant des identifiants qui combinent noms et numéros au format « nom-numéro ». Le tri des lignes en fonction de cette colonne en utilisant l'ordre des caractères par défaut entraîne un ordre indésirable :
name-1 name-11 name-12 name-2
Pour résoudre ce problème, vous pouvez extraire la partie numérique du texte à l'aide de la fonction SUBSTRING_INDEX() :
SUBSTRING_INDEX(field,'-',-1)
Cette fonction extrait la sous-chaîne après la dernière occurrence du caractère "-", isolant ainsi le numérique portion.
Ensuite, vous pouvez convertir la sous-chaîne extraite en un entier non signé à l'aide de la fonction CONVERT() :
CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
Cette étape transforme la chaîne de caractères en un type de données numérique qui peut être utilisé pour les comparaisons numériques.
Enfin, vous pouvez utiliser la clause ORDER BY pour trier les lignes en fonction des valeurs numériques extraites et converties. portion :
ORDER BY num
Cette requête doit produire l'ordre de tri souhaité :
name-1 name-2 name-11 name-12
Notez que cette approche suppose que la partie non numérique de l'identifiant ne contiendra aucun chiffre. Si cela n'est pas garanti, vous devrez peut-être utiliser des techniques de manipulation de chaînes plus complexes.
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!