2016-05-30 4 views
1

je les données suivantescolonne Alpahanumeric tri naturel dans une base MySQL où les données sont une combinaison des alphabets, le nombre, le caractère spécial

Email

[email protected]  
[email protected]  
[email protected]  
[email protected] 
[email protected]  
[email protected]  
[email protected]  
[email protected]  
test!&[email protected] 

Je veux trier ci-dessus données

ci-dessous comme le tri naturel dans mysql

[email protected]  
[email protected]  
[email protected]  
[email protected]  
[email protected]  
[email protected]  
[email protected]  
test!&[email protected] 

Mes tentatives:

SELECT email FROM user 
ORDER BY email+0<>0 DESC, 
      email+0, email; 

SELECT email FROM user 
ORDER BY email REGEXP '^\d*[^\da-z&\.\' \-\"\!\@\#\$\%\^*()\;\:\<\>\,\?\/\~`\|_\-]' DESC, 
      email+0, email 
+0

Qu'avez-vous essayé? – sagi

+0

@sagi J'ai essayé cet email SELECT DE l'utilisateur COMMANDER PAR email + 0 <> 0 DESC, email + 0, email; une autre requête avec expression régulière est SELECT email DE l'utilisateur ORDER BY email REGEXP '^ \ d * [^ \ da-z & \. \' \ - \ "\! \ @ \ # \ $ \% \^\ * \ (\) \; \: \ <\> \, \? \/\ ~ \ '\ | \ _ \ -] 'DESC, email + 0, email – techsavvy

+0

une solution à ce sujet? – techsavvy

Répondre

0

Vous pouvez écrire un ensemble de fonctions définies par l'utilisateur qui divisent les chaînes en un nombre prédéterminé et un composant de repos et d'utiliser le préfixe numérique pour trier numériquement et la composante reste à trier par ordre alphabétique.

+0

Ceci est une solution mais pas une solution réalisable parce que la performance doit aussi prendre en compte – techsavvy

+0

Si besoin de chercher des millions d'enregistrements, cette solution est réalisable? Cela peut augmenter le problème de performance – techsavvy

+0

Tout dépend de la complexité du travail que vous avez besoin de faire. En utilisant les fonctions et en les écrivant dans une seule requête/vue/procédure stockée avant la production, vous devriez probablement vous soucier de la faire fonctionner de manière fiable avant de vous soucier des performances. – Kris