मारियाडीबी में, WEIGHT_STRING()
एक अंतर्निहित फ़ंक्शन है जो इनपुट स्ट्रिंग के लिए वज़न स्ट्रिंग देता है। रिटर्न वैल्यू एक बाइनरी स्ट्रिंग है जो स्ट्रिंग की तुलना और सॉर्टिंग वैल्यू का प्रतिनिधित्व करती है।
यदि इनपुट स्ट्रिंग एक गैर-बाइनरी मान है, तो वापसी मान में स्ट्रिंग का संयोजन भार होता है। यदि यह एक बाइनरी मान है, तो परिणाम इनपुट स्ट्रिंग के समान है। ऐसा इसलिए है क्योंकि बाइनरी स्ट्रिंग में प्रत्येक बाइट का वजन बाइट मान होता है।
यह फ़ंक्शन आंतरिक उपयोग के लिए एक डिबगिंग फ़ंक्शन है। इसका उपयोग कोलेशन के परीक्षण और डिबगिंग के लिए किया जा सकता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [LEVEL levels] [flags])
levels: N [ASC|DESC|REVERSE] [, N [ASC|DESC|REVERSE]] ...
नीचे प्रत्येक तर्क/खंड का विवरण दिया गया है।
AS
खंड
वैकल्पिक AS
क्लॉज इनपुट स्ट्रिंग को बाइनरी या गैर-बाइनरी स्ट्रिंग के साथ-साथ एक विशेष लंबाई तक कास्ट करने की अनुमति देता है।
AS BINARY(N)
वर्णों के बजाय बाइट्स में लंबाई को मापता है, और 0x00 बाइट्स के साथ दाहिने पैड को वांछित लंबाई तक मापता है।AS CHAR(N)
वर्णों में लंबाई को मापता है, और वांछित लंबाई तक रिक्त स्थान वाले दाएं पैड को मापता है।
N
इसका न्यूनतम मान 1
. है , और यदि यह इनपुट स्ट्रिंग की लंबाई से कम है, तो स्ट्रिंग को बिना किसी चेतावनी के काट दिया जाता है।
LEVEL
खंड
निर्दिष्ट करता है कि वापसी मूल्य में विशिष्ट संयोजन स्तरों के लिए भार होना चाहिए।
LEVEL
विनिर्देशक या तो एक पूर्णांक हो सकता है, पूर्णांकों की अल्पविराम से अलग की गई सूची, या डैश द्वारा अलग किए गए पूर्णांकों की श्रेणी (व्हाट्सएप को अनदेखा किया जाता है)। पूर्णांक 1
. से लेकर हो सकते हैं अधिकतम 6
. तक , संयोजन पर निर्भर है, और इसे आरोही क्रम में सूचीबद्ध करने की आवश्यकता है।
- यदि
LEVEL
क्लॉज प्रदान नहीं किया गया है,1
. का डिफॉल्ट मिलान के लिए अधिकतम मान लिया गया है। - यदि
LEVEL
श्रेणी का उपयोग किए बिना निर्दिष्ट है, एक वैकल्पिक संशोधक की अनुमति है। ASC
(डिफ़ॉल्ट) बिना किसी संशोधन के वज़न लौटाता है।DESC
बिटवाइज़-उल्टे वज़न लौटाता है।REVERSE
भार को उल्टे क्रम में लौटाता है।
उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है:
SELECT HEX(WEIGHT_STRING('z'));
परिणाम:
+-------------------------+ | HEX(WEIGHT_STRING('z')) | +-------------------------+ | 005A | +-------------------------+
यहां, हम HEX()
. का उपयोग करते हैं हेक्साडेसिमल प्रारूप में गैर-मुद्रण योग्य परिणामों का प्रतिनिधित्व करने के लिए कार्य करता है।
AS
खंड
यहां AS
. का उपयोग करके एक उदाहरण दिया गया है इनपुट स्ट्रिंग को किसी दिए गए प्रकार और लंबाई में डालने के लिए क्लॉज।
SET @str = 'z';
SELECT
HEX(WEIGHT_STRING(@str AS CHAR(3))) 'Char 3',
HEX(WEIGHT_STRING(@str AS CHAR(8))) 'Char 8',
HEX(WEIGHT_STRING(@str AS BINARY(3))) 'Binary 3',
HEX(WEIGHT_STRING(@str AS BINARY(8))) 'Binary 8';
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
Char 3: 005A00200020 Char 8: 005A0020002000200020002000200020 Binary 3: 7A0000 Binary 8: 7A00000000000000
संयोजन
निम्नलिखित दो उदाहरण प्रदर्शित करते हैं कि कैसे उपयोग किए जा रहे संयोजन के आधार पर एक स्ट्रिंग में एक अलग वजन स्ट्रिंग हो सकती है।
पहले उदाहरण में प्रयुक्त संयोजन केस-असंवेदनशील है। दूसरे उदाहरण में प्रयुक्त संयोजन केस-संवेदी है।
SET @upper = _latin1 'PLAY' COLLATE latin1_general_ci;
SET @lower = lcase(@upper);
SELECT
@upper 'String',
HEX(@upper) 'Hex',
HEX(WEIGHT_STRING(@upper)) 'Weight String'
UNION ALL
SELECT
@lower,
HEX(@lower),
HEX(WEIGHT_STRING(@lower));
परिणाम:
+--------+----------+---------------+ | String | Hex | Weight String | +--------+----------+---------------+ | PLAY | 504C4159 | 8F7941AA | | play | 706C6179 | 8F7941AA | +--------+----------+---------------+
और यहाँ एक ही उदाहरण है, केस-संवेदी संयोजन को छोड़कर।
SET @upper = _latin1 'PLAY' COLLATE latin1_general_cs;
SET @lower = lcase(@upper);
SELECT
@upper 'String',
HEX(@upper) 'Hex',
HEX(WEIGHT_STRING(@upper)) 'Weight String'
UNION ALL
SELECT
@lower,
HEX(@lower),
HEX(WEIGHT_STRING(@lower));
परिणाम:
+--------+----------+---------------+ | String | Hex | Weight String | +--------+----------+---------------+ | PLAY | 504C4159 | 8F7941AA | | play | 706C6179 | 907A42AB | +--------+----------+---------------+
अशक्त तर्क
पासिंग null
रिटर्न null
:
SELECT WEIGHT_STRING(null);
परिणाम:
+---------------------+ | WEIGHT_STRING(null) | +---------------------+ | NULL | +---------------------+
अनुपलब्ध तर्क
कॉलिंग WEIGHT_STRING()
तर्कों की गलत संख्या के साथ, या बिना कोई तर्क पारित किए त्रुटि उत्पन्न होती है:
SELECT WEIGHT_STRING();
परिणाम:
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पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।