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

MySQL में ORDER BY columnname*1 का उद्देश्य क्या है?

MySQL में संख्यात्मक क्रमबद्धता के लिए अंतर्निहित प्रकार परिवर्तन

जब संख्यात्मक डेटा VARCHAR/CHAR कॉलम में संग्रहीत होता है, तो ORDER BY column*1 से गुणा करने से MySQL को स्ट्रिंग को संख्या में अंतर्निहित रूप से परिवर्तित करने के लिए मजबूर किया जाता है, जिससे शब्दकोश क्रम के बजाय उचित संख्यात्मक क्रमबद्धता सक्षम होती है।

समस्या: स्ट्रिंग क्रमबद्धता बनाम संख्यात्मक क्रमबद्धता

पहले एक स्ट्रिंग ID टेबल बनाते हैं:

mysql> CREATE TABLE DemoTable1441 (
    -> Id VARCHAR(30)
    -> );
Query OK, 0 rows affected (0.53 sec)

mysql> INSERT INTO DemoTable1441 VALUES ('301'), ('23'), ('345'), ('10'), ('38');
Query OK, 5 rows affected (0.21 sec)

mysql> SELECT * FROM DemoTable1441;
+------+
| Id   |
+------+
| 301  |
| 23   |
| 345  |
| 10   |
| 38   |
+------+
5 rows in set (0.00 sec)

स्ट्रिंग क्रमबद्धता (डिफ़ॉल्ट)

mysql> SELECT * FROM DemoTable1441 ORDER BY Id;
+------+
| Id   |
+------+
| 10   |
| 23   |
| 301  |
| 345  |
| 38   |
+------+
5 rows in set (0.00 sec)

स्ट्रिंग क्रमबद्धता: '1' < '2' < '3' → 10, 23, 301, 345, 38

संख्यात्मक क्रमबद्धता (*1 ट्रिक के साथ)

mysql> SELECT * FROM DemoTable1441 ORDER BY Id*1;
+------+
| Id   |
+------+
| 10   |
| 23   |
| 38   |
| 301  |
| 345  |
+------+
5 rows in set (0.00 sec)

संख्यात्मक क्रमबद्धता: 10 < 23 < 38 < 301 < 345 ✓

यह कैसे काम करता है

  • Id * 1 अंकगणितीय संचालन करता है
  • MySQL स्ट्रिंग को संख्या में परिवर्तित करता है
  • परिणाम संख्यात्मक रूप से क्रमबद्ध होता है
  • मूल स्ट्रिंग मान अपरिवर्तित रहता है

बेहतर विकल्प: CAST()

-- स्पष्ट कास्टिंग (अनुशंसित)
SELECT * FROM DemoTable1441 ORDER BY CAST(Id AS UNSIGNED);

-- या SIGNED के लिए
SELECT * FROM DemoTable1441 ORDER BY CAST(Id AS SIGNED);

चेतावनी

गैर-संख्यात्मक डेटा: यदि कॉलम में गैर-संख्यात्मक स्ट्रिंग्स हैं, तो वे 0 में परिवर्तित हो जाते हैं। डेटा गुणवत्ता सुनिश्चित करें या उचित त्रुटि प्रबंधन के लिए CAST() का उपयोग करें।

सर्वोत्तम अभ्यास

  • संख्यात्मक डेटा के लिए संख्यात्मक डेटा प्रकार (INT, DECIMAL) का उपयोग करें
  • स्पष्टता के लिए स्पष्ट CAST() पसंद करें
  • बड़े डेटासेट के लिए, संख्यात्मक कॉलम पर इंडेक्स बनाएं
  1. MySQL UNHEX() का PHP समकक्ष: hex2bin() MySQL UNHEX() का PHP समकक्ष: hex2bin()

    PHP में hex2bin() फ़ंक्शन MySQL के UNHEX() फ़ंक्शन का PHP समकक्ष hex2bin() फ़ंक्शन है (PHP 5.4.0+ में उपलब्ध)। PHP सिंटैक्स $variable = hex2bin(yourHexadecimalValue); PHP कोड उदाहरण $myFirstValue = hex2bin(7777772E4D7953514C4578616D706C652E636F6D); var_dump($myFirstValue); $mySecondValue = hex2bi

  1. - MySQL में PHP stripos() के समकक्ष क्या है?

    MySQL में stripos() का समकक्ष INSTR() है, जो किसी स्ट्रिंग में दूसरी स्ट्रिंग की पहली घटना की स्थिति लौटाता है। सिंटैक्स निम्नलिखित है: SELECT INSTR(yourColumnName, yourWord) AS anyAliasName FROM yourTableName; आइए पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable ( Title TEXT ); टेबल में कुछ रिकॉ

  1. - C# में 'is' Operator का Purpose क्या है?

    C# में is Operator Check करता है कि Object का Run-Time Type दिए गए Type के साथ Compatible है या नहीं।निम्न Syntax है।expr is typeयहां, expr Expression हैtype Type का Name हैनिम्न Example C# में is Operator के उपयोग को दर्शाता है।Exampleusing System; class One { } class Two { } public class Demo { &n