Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

प्राकृतिक छँटाई SQL ORDER BY

यह यह करेगा:

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

the ORDER BY . के 4 स्तर :

  1. REGEXP किसी भी अल्फ़ा लाइन को 1 और गैर-अल्फ़ाज़ को 0
  2. . असाइन करता है
  3. SIGNED INT सभी नंबरों को डैश से पहले वाले हिस्से के अनुसार क्रमित करता है।
  4. SIGNED INT डैश को हटाने के बाद डैश से पहले समान मान वाले किसी भी आइटम को डैश के बाद वाले हिस्से के अनुसार क्रमबद्ध करें। संभावित रूप से नंबर 2 की जगह ले सकता है, लेकिन 90-1 के साथ वैसा ही व्यवहार नहीं करना चाहेगा जैसा कि 9-01 के मामले में होता है।
  5. अक्षरों को वर्णानुक्रम में क्रमबद्ध करता है।

डेमो: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. MYSQL - एक अनुरोध में पेरिस टाइमज़ोन पर अभी () और एक तिथि की तुलना करें

  2. mysql एक कॉलम में सभी मान बदलें

  3. MySQL:आपको अपने SQL सिंटैक्स में त्रुटि है... 'desc' VALUES ('Idea', 'Description')' के पास'

  4. दो तालिकाओं (1-एम संबंध के साथ) में शामिल हों जहां दूसरी तालिका को एक पंक्ति में 'चपटा' करने की आवश्यकता होती है

  5. मौजूदा फ़ील्ड के आधार पर कॉलम अपडेट करना