Mysql
 sql >> база данни >  >> RDS >> Mysql

Естествено сортиране на SQL ПОРЪЧАЙ ПО

Това ще направи това:

SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
        ,CAST(value as SIGNED INTEGER)
        ,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
        ,value

4-те нива на the ORDER BY :

  1. REGEXP присвоява на всеки алфа ред 1, а на неалфа - 0
  2. SIGNED INT Сортира всички числа по частта, предхождаща тирето.
  3. SIGNED INT след премахване на тирето сортира всеки от елементите със същата стойност преди тирето по частта след тирето. Потенциално може да замени номер 2, но не бих искал да третира 90-1 по същия начин като 9-01, ако възникне такъв случай.
  4. Сортира буквите по азбучен ред.

Демо:SQL Fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Прегледайте всички таблици и преименувайте колона

  2. Използване на fork в Ruby on Rails за създаване на паралелен процес

  3. Проблем с изчакване на връзката с MySQL - Приложение Grails на Tomcat, използващо Hibernate и ORM

  4. Строго автоматично увеличаване на стойността в MySQL

  5. Разбиране на изгледите в SQL