Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में अधिकतम से न्यूनतम मान तक क्रमबद्ध करना

परिचय

जब संख्याएं VARCHAR कॉलम में स्टोर होती हैं, तो सामान्य ORDER BY Price DESC लेक्सिकोग्राफिक (स्ट्रिंग) क्रम देता है: '80', '800', '108', '765' → '800', '80', '765', '108' (गलत)। संख्यात्मक क्रम के लिए लंबाई और मान दोनों से क्रमबद्ध करना पड़ता है।

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable (
    -> Price VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.92 sec)
mysql> INSERT INTO DemoTable VALUES('80');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('800');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('108');
Query OK, 1 row affected (0.50 sec)
mysql> INSERT INTO DemoTable VALUES('765');
Query OK, 1 row affected (0.14 sec)

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-------+
| Price |
+-------+
| 80    |
| 800   |
| 108   |
| 765   |
+-------+
4 rows in set (0.00 sec)

अधिकतम से न्यूनतम (संख्यात्मक) क्रमबद्ध करने की क्वेरी

mysql> SELECT * FROM DemoTable
    -> ORDER BY LENGTH(Price) DESC, Price DESC;

परिणाम

+-------+
| Price |
+-------+
| 800   |
| 765   |
| 108   |
| 80    |
+-------+
4 rows in set (0.00 sec)

व्याख्या

  • LENGTH(Price) DESC - पहले स्ट्रिंग लंबाई के अवरोही क्रम में (अधिक अंक = बड़ी संख्या)
  • Price DESC - समान लंबाई वालों के लिए लेक्सिकोग्राफिक अवरोही क्रम
  • '800' (लंबाई 3) → '765' (लंबाई 3) → '108' (लंबाई 3) → '80' (लंबाई 2)
  • लंबाई 3 वालों में: '800' > '765' > '108' (स्ट्रिंग तुलना संख्यात्मक तुलना के समान काम करती है जब लंबाई समान हो)

बेहतर विकल्प: CAST करके संख्यात्मक क्रमबद्धिकरण

SELECT * FROM DemoTable ORDER BY CAST(Price AS UNSIGNED) DESC;

यह अधिक सीधा, पठनीय, और सभी मामलों के लिए सही है (ऋणात्मक संख्याओं के लिए SIGNED उपयोग करें)।

क्यों VARCHAR में संख्याएं स्टोर न करें?

  • क्रमबद्धिकरण जटिल
  • गणना त्रुटिपूर्ण
  • स्टोरेज अक्षम
  • डेटा अखंडता जोखिम

हमेशा संख्यात्मक डेटा के लिए INT, DECIMAL, BIGINT आदि उपयोग करें।

  1. - MySQL में कस्टम सॉर्टिंग करें

    MySQL में कस्टम सॉर्टिंग करने के लिए ORDER BY FIELD() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Id int -> ); Query OK, 0 rows affected (0.82 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(101); Q

  1. - C++ में सबएरे में "मैक्स + मिन" का न्यूनतम मान

    समस्या कथन n पॉजिटिव एलिमेंट्स का एक ऐरे दिया गया है हमें सबएरे में मैक्स और मिन एलिमेंट्स के न्यूनतम संभावित योग को ढूंढना है यह देखते हुए कि सबएरे का आकार 2 से बड़ा या बराबर होना चाहिए। उदाहरण यदि arr[] = {10, 5, 15, 7, 2, 1, 3} तो मैक्स + मिन का योग 3 है जब हम 2 + 1 जोड़ते हैं। एल्गोरिदम किसी

  1. - C# DateTime अधिकतम मान

    दिनांक के लिए अधिकतम मान सेट करने के लिए DateTime गुण MaxValue का उपयोग करें: DateTime max = DateTime.MaxValue; अब max का मान प्रदर्शित करके दिनांक के अधिकतम मान को प्राप्त करें: उदाहरण using System; using System.Linq; public class Demo { public static void Main() { DateTime max = DateT