मारियाडीबी में, CONVERT()
एक अंतर्निहित फ़ंक्शन है जो एक मान को दूसरे डेटा प्रकार में परिवर्तित करता है। यह एक प्रकार का मान लेता है और निर्दिष्ट प्रकार का मान देता है।
जब आप फ़ंक्शन को कॉल करते हैं, तो आप मान को एक तर्क के रूप में प्रदान करते हैं, साथ ही वह प्रकार भी प्रदान करते हैं, जिसमें आप इसे रूपांतरित करना चाहते हैं।
CONVERT()
CAST()
. के समान है ।
सिंटैक्स
CONVERT()
फ़ंक्शन को ODBC सिंटैक्स या SQL92 सिंटैक्स का उपयोग करके कॉल किया जा सकता है।
ओडीबीसी सिंटैक्स:
CONVERT(expr, type)
SQL92 सिंटैक्स:
CONVERT(expr USING charset)
जहां expr
कन्वर्ट करने के लिए मूल्य है, type
वह डेटा प्रकार है जिसमें आप इसे रूपांतरित करना चाहते हैं।
SQL92 सिंटैक्स का उपयोग करते हुए, charset
वह चरित्र सेट है जिसमें आप इसे बदलना चाहते हैं।
उदाहरण
यहां एक सरल उदाहरण दिया गया है:
SELECT CONVERT(123.45, INT);
परिणाम:
+----------------------+ | CONVERT(123.45, INT) | +----------------------+ | 123 | +----------------------+
इसने मान को एक पूर्णांक में बदल दिया, जिसने दशमलव स्थानों को हटा दिया।
यहां एक और उदाहरण दिया गया है:
SELECT CONVERT('2020-01-01', DATETIME);
परिणाम:
+---------------------------------+ | CONVERT('2020-01-01', DATETIME) | +---------------------------------+ | 2020-01-01 00:00:00 | +---------------------------------+
इस मामले में, हमने एक स्ट्रिंग को DATETIME
. में बदल दिया है डेटा प्रकार।
रूपांतरण विफलता
पिछले उदाहरण में, हमने एक मान्य DATE
प्रदान किया था स्ट्रिंग (या DATE
शाब्दिक)। इसलिए मारियाडीबी मान को DATETIME
. में बदलने में सक्षम था डेटा प्रकार।
हालांकि, यहां बताया गया है कि जब हम एक अमान्य DATE
प्रदान करते हैं तो क्या होता है स्ट्रिंग:
SELECT CONVERT('1 Jan, 2020', DATE);
परिणाम:
+------------------------------+ | CONVERT('1 Jan, 2020', DATE) | +------------------------------+ | NULL | +------------------------------+
यहां, मारियाडीबी यह पता नहीं लगा सका कि इस मान को कैसे परिवर्तित किया जाए और NULL
. लौटाया ।
इस मामले में, हम किसी अन्य फ़ंक्शन का उपयोग कर सकते हैं, जैसे STR_TO_DATE()
ऐसा रूपांतरण करने के लिए:
SELECT STR_TO_DATE('1 Jan, 2020', '%e %M, %Y');
परिणाम:
+-----------------------------------------+ | STR_TO_DATE('1 Jan, 2020', '%e %M, %Y') | +-----------------------------------------+ | 2020-01-01 | +-----------------------------------------+
एक वर्ण सेट निर्दिष्ट करें
SQL92 सिंटैक्स हमें कनवर्ट करने के लिए एक वर्ण सेट निर्दिष्ट करने की अनुमति देता है।
उदाहरण:
SELECT CONVERT('ไม้เมือง' USING tis620);
परिणाम:
+--------------------------------------------------+ | CONVERT('ไม้เมือง' USING tis620) | +--------------------------------------------------+ | ไม้เมือง | +--------------------------------------------------+
कैरेक्टर सेट को बदलने से उस कैरेक्टर सेट के लिए डिफॉल्ट कोलेशन के रूप में कॉलेशन भी बदल जाएगा।
उपरोक्त उदाहरण वास्तव में यह प्रदर्शित नहीं करता है कि वर्ण सेट/संयोजन कैसे बदल गया है।
सौभाग्य से हम CHARSET()
. जैसे कार्यों का उपयोग कर सकते हैं और COLLATION()
यह देखने के लिए कि चरित्र सेट और संयोजन कैसे बदल गया है:
SELECT
CHARSET('ไม้เมือง') AS a,
COLLATION('ไม้เมือง') AS b,
CHARSET(CONVERT('ไม้เมือง' USING tis620)) AS c,
COLLATION(CONVERT('ไม้เมือง' USING tis620)) AS d;
परिणाम:
+------+-----------------+--------+----------------+ | a | b | c | d | +------+-----------------+--------+----------------+ | utf8 | utf8_general_ci | tis620 | tis620_thai_ci | +------+-----------------+--------+----------------+
पहला मेरे कनेक्शन के लिए वर्ण सेट और संयोजन का उपयोग करता है। दूसरा वर्ण सेट का उपयोग करता है जिसे हमने स्पष्ट रूप से CONVERT()
. के साथ निर्दिष्ट किया है , साथ ही उस वर्ण सेट के लिए डिफ़ॉल्ट संयोजन।
कोलाज की पूरी सूची और उनके मेल खाने वाले कैरेक्टर सेट के लिए मारियाडीबी में उपलब्ध कोलाज की यह सूची देखें।
अशक्त तर्क
null
को बदलने की कोशिश कर रहा है रिटर्न null
:
SELECT CONVERT(null, DATETIME);
परिणाम:
+-------------------------+ | CONVERT(null, DATETIME) | +-------------------------+ | NULL | +-------------------------+
हालांकि, पासिंग null
नए डेटा प्रकार को निर्दिष्ट किए बिना सिंटैक्स त्रुटि में परिणाम:
SELECT CONVERT(null);
परिणाम:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।
अनुपलब्ध तर्क
कॉलिंग CONVERT()
तर्क पारित किए बिना सिंटैक्स त्रुटि में परिणाम:
SELECT CONVERT();
परिणाम:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।