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

MySQL में WEIGHT_STRING() फ़ंक्शन कैसे काम करता है

MySQL में, WEIGHT_STRING() फ़ंक्शन इनपुट स्ट्रिंग के लिए वज़न स्ट्रिंग देता है। रिटर्न वैल्यू एक बाइनरी स्ट्रिंग है जो स्ट्रिंग की तुलना और सॉर्टिंग वैल्यू का प्रतिनिधित्व करती है।

यदि इनपुट स्ट्रिंग एक गैर-बाइनरी मान है, तो वापसी मान में स्ट्रिंग के लिए संयोजन भार होता है। यदि यह एक बाइनरी मान है, तो परिणाम इनपुट स्ट्रिंग के समान है। ऐसा इसलिए है क्योंकि बाइनरी स्ट्रिंग में प्रत्येक बाइट का वजन बाइट मान होता है।

यह फ़ंक्शन आंतरिक उपयोग के लिए एक डिबगिंग फ़ंक्शन है। इसका उपयोग कॉलेशन के परीक्षण और डिबगिंग के लिए किया जा सकता है। ध्यान दें कि MySQL के संस्करणों के बीच इसका व्यवहार बदल सकता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [flags])

जहां str इनपुट स्ट्रिंग है। वैकल्पिक AS क्लॉज आपको इनपुट स्ट्रिंग को किसी दिए गए प्रकार और लंबाई में डालने की अनुमति देता है। वैकल्पिक flags तर्क वर्तमान में MySQL (संस्करण 8.0 के अनुसार) में उपयोग नहीं किया जाता है।

उदाहरण 1 - मूल उपयोग

गैर-बाइनरी इनपुट स्ट्रिंग का उपयोग करके उपयोग का एक मूल उदाहरण यहां दिया गया है:

SELECT HEX(WEIGHT_STRING('Cat'));

परिणाम:

+---------------------------+
| HEX(WEIGHT_STRING('Cat')) |
+---------------------------+
| 1C7A1C471E95              |
+---------------------------+

ध्यान दें कि मैं HEX() . का उपयोग करता हूं WEIGHT_STRING() प्रदर्शित करने के लिए फ़ंक्शन नतीजा। ऐसा इसलिए है क्योंकि WEIGHT_STRING() एक द्विआधारी परिणाम देता है। हम उपयोग कर सकते हैं HEX() परिणाम को प्रिंट करने योग्य रूप में प्रदर्शित करने के लिए।

अगर मैं HEX() का इस्तेमाल नहीं करता/करती हूं इस उदाहरण में मुझे यह मिलता है:

SELECT WEIGHT_STRING('Cat');

परिणाम:

+----------------------+
| WEIGHT_STRING('Cat') |
+----------------------+
| zG?                |
+----------------------+

तो बस स्पष्ट होने के लिए, यहाँ स्ट्रिंग, उस स्ट्रिंग का हेक्साडेसिमल प्रतिनिधित्व और उसके वजन स्ट्रिंग का हेक्साडेसिमल प्रतिनिधित्व है:

SET @str = 'Cat';
SELECT @str, HEX(@str), HEX(WEIGHT_STRING(@str));

परिणाम:

+------+-----------+--------------------------+
| @str | HEX(@str) | HEX(WEIGHT_STRING(@str)) |
+------+-----------+--------------------------+
| Cat  | 436174    | 1C7A1C471E95             |
+------+-----------+--------------------------+

उदाहरण 2 - AS क्लॉज

यहां AS . का उपयोग करके एक उदाहरण दिया गया है इनपुट स्ट्रिंग को किसी दिए गए प्रकार और लंबाई में डालने के लिए क्लॉज।

SET @str = 'Cat';
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       | Char 8       | Binary 3 | Binary 8         |
+--------------+--------------+----------+------------------+
| 1C7A1C471E95 | 1C7A1C471E95 | 436174   | 4361740000000000 |
+--------------+--------------+----------+------------------+

उदाहरण 3 - संयोजन

निम्नलिखित दो उदाहरण प्रदर्शित करते हैं कि कैसे उपयोग किए जा रहे संयोजन के आधार पर एक स्ट्रिंग में एक अलग वजन स्ट्रिंग हो सकती है। पहले उदाहरण में प्रयुक्त संयोजन उच्चारण-असंवेदनशील और केस-असंवेदनशील है। दूसरे उदाहरण में प्रयुक्त संयोजन उच्चारण-संवेदनशील और केस-संवेदी है।

SET @upper = _utf8mb4 'CAT' COLLATE utf8mb4_0900_ai_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 |
+--------+--------+---------------+
| CAT    | 434154 | 1C7A1C471E95  |
| cat    | 636174 | 1C7A1C471E95  |
+--------+--------+---------------+

और यहां एक ही उदाहरण है, उच्चारण-संवेदनशील और केस-संवेदी संयोजन को छोड़कर।

SET @upper = _utf8mb4 'CAT' COLLATE utf8mb4_0900_as_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                                |
+--------+--------+----------------------------------------------+
| CAT    | 434154 | 1C7A1C471E9500000020002000200000000800080008 |
| cat    | 636174 | 1C7A1C471E9500000020002000200000000200020002 |
+--------+--------+----------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2018 में MySQL:8.0 और अन्य टिप्पणियों में क्या है

  2. VARCHAR फ़ील्ड में स्ट्रिंग की घटनाओं की संख्या की गणना करें?

  3. MySQL में, क्या मुझे संख्याएँ उद्धृत करनी चाहिए या नहीं?

  4. क्या mysql_insert_id उपयोग करने के लिए सुरक्षित है?

  5. प्राथमिक कुंजी SQL ट्यूटोरियल - डेटाबेस में प्राथमिक कुंजी को कैसे परिभाषित करें