MySQL में, JSON_UNQUOTE()
फ़ंक्शन एक JSON दस्तावेज़ को "अनकोट" करता है और परिणाम को utf8mb4
. के रूप में लौटाता है स्ट्रिंग।
आप JSON दस्तावेज़ को एक तर्क के रूप में प्रदान करते हैं, और फ़ंक्शन बाकी काम करेगा।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_UNQUOTE(json_val)
जहां json_val
वह JSON दस्तावेज़ है जिसे आप गैर-उद्धृत करना चाहते हैं।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET @data = '"Homer Simpson"'; SELECT @data Original, JSON_UNQUOTE(@data) Unquoted;
परिणाम:
+-----------------+---------------+ | Original | Unquoted | +-----------------+---------------+ | "Homer Simpson" | Homer Simpson | +-----------------+---------------+
एस्केप कैरेक्टर
जिस तरह से यह फ़ंक्शन एस्केप वर्णों को संभालता है वह इस बात पर निर्भर करता है कि NO_BACKSLASH_ESCAPES
सक्षम या अक्षम है।
जब NO_BACKSLASH_ESCAPES अक्षम हो
NO_BACKSLASH_ESCAPES
MySQL 8.0 में डिफ़ॉल्ट रूप से मोड अक्षम है।
अगर हम \t
. शामिल करते हैं तो यहां क्या होता है एक स्ट्रिंग के भीतर एक टैब वर्ण निर्दिष्ट करने के लिए जब NO_BACKSLASH_ESCAPES
अक्षम है, और बिना JSON_UNQUOTE()
. का उपयोग करके ।
SET @data = '"Homer \t Simpson"'; SELECT @data Original;
परिणाम:
+-------------------+ | Original | +-------------------+ | "Homer Simpson" | +-------------------+
और अगर हम JSON_UNQUOTE()
. का उपयोग करते हैं तो क्या होता है :
SET @data = '"Homer \t Simpson"'; SELECT JSON_UNQUOTE(@data) Unquoted;
परिणाम:
ERROR 3141 (22032): Invalid JSON text in argument 1 to function json_unquote: "Invalid escape character in string." at position 7.
हम दो बैकस्लैश का उपयोग करके इसे दूर कर सकते हैं (\\t
) हालांकि, ध्यान रखें कि ऐसा करने से परिणाम बदल जाएगा जब नहीं JSON_UNQUOTE()
. का उपयोग करके ।
SET @data = '"Homer \\t Simpson"'; SELECT @data Original, JSON_UNQUOTE(@data) Unquoted;
परिणाम:
+--------------------+-----------------+ | Original | Unquoted | +--------------------+-----------------+ | "Homer \t Simpson" | Homer Simpson | +--------------------+-----------------+
जब NO_BACKSLASH_ESCAPES सक्षम हो
यहां बताया गया है कि जब हम NO_BACKSLASH_ESCAPES
enable को सक्षम करते हैं तो क्या होता है पिछला कथन चलाने से पहले:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES'; SET @data = '"Homer \\t Simpson"'; SELECT @data Original, JSON_UNQUOTE(@data) Unquoted;
परिणाम:
+---------------------+------------------+ | Original | Unquoted | +---------------------+------------------+ | "Homer \\t Simpson" | Homer \t Simpson | +---------------------+------------------+
और अगर हम पहली बैकस्लैश हटा दें तो क्या होगा:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES'; SET @data = '"Homer \t Simpson"'; SELECT @data Original, JSON_UNQUOTE(@data) Unquoted;
परिणाम:
+--------------------+-----------------+ | Original | Unquoted | +--------------------+-----------------+ | "Homer \t Simpson" | Homer Simpson | +--------------------+-----------------+