2016-04-04 38 views
-2

"Order by" -TSQL sorunu için bir çözüm arıyorum. Ben aşağıdaki kurallara göre sipariş etmek istiyorum bir sütun "etiketi" define:
1. En Kısa
2. Numaraları
3. Harf'i
4. Küçük harf
5. Özel karakterlerSQL - Order by - Özel Karakterler Son

örn:
1. acv
2. Adres
3. adres
4. Yönetici
5. yöneticileri
6. AlertType
7. alertType1
8. alertType106
9. analiz
10. analyse2
11. driving_time
12. driving_time2
13. Z_1111
14.
15. __Login__

__10__

Basitçe "etiketle sırala" kullanıcısı olduğunda çıktı şu şekildedir:
1. __10__
2. __Login__
3. ACV
4. Yönetici
5. yöneticiler
6. Adres
7. adres
8. AlertType
9. alertType1
10. alertType106
11.
analiz 12. analyse2
13. driving_time
14. driving_time2
15. Z_1111

Bunun gibi benzer sorular var; Sort MySQL results alphabetically, but with numbers last

Çıktımı filtrelemek için RegEx kullanabilir miyim? Ayrıca iki çıkışa sahip olabileceğinizi ve bunları birleştirdiğinizden de okudum. Bunu nasıl yapabilirim ve bu iki yöntemden hangisi daha iyi (daha hızlı)?

cevap

0

sonraki kod uygulanmaya deneyebilirsiniz: cevap için

ORDER BY CASE WHEN ASCII(CAST(LEFT(tag,1) AS CHAR(1)) BETWEEN 65 AND 90 
    OR ASCII(CAST(LEFT(tag,1) AS CHAR(1)) BETWEEN 67 AND 122 THEN 0 ELSE 1 END, tag 
+0

Teşekkür ama hala yanlış sırasıdır. – Moarc