MySQL में, LOCATE() फ़ंक्शन एक स्ट्रिंग के भीतर एक सबस्ट्रिंग की स्थिति देता है। अधिक विशेष रूप से, यह स्ट्रिंग के भीतर पहली घटना की स्थिति देता है, या किसी दिए गए प्रारंभिक बिंदु के बाद पहली घटना देता है।
सिंटैक्स
इसका उपयोग निम्न में से किसी भी तरीके से किया जा सकता है:
LOCATE(substr,str) LOCATE(substr,str,pos)
जहां substr पता लगाने के लिए सबस्ट्रिंग है, और str खोजने के लिए स्ट्रिंग है।
दूसरे सिंटैक्स का उपयोग करते समय, pos खोज शुरू करने की स्थिति है।
उदाहरण 1 - पहला सिंटैक्स
यहां पहले सिंटैक्स का उपयोग करने वाला एक उदाहरण दिया गया है:
SELECT LOCATE('cat', 'One cat jumped over the other cat') AS Result; परिणाम:
+--------+ | Result | +--------+ | 5 | +--------+
उदाहरण 2 - दूसरा सिंटैक्स
यहां एक उदाहरण दिया गया है जहां हम खोज शुरू करने के लिए एक प्रारंभिक स्थिति निर्दिष्ट करते हैं:
SELECT LOCATE('cat', 'One cat jumped over the other cat', 6) AS Result; परिणाम:
+--------+ | Result | +--------+ | 31 | +--------+
इस मामले में, cat . की पहली घटना स्थिति 5 से शुरू होता है, लेकिन मैंने खोज को स्थिति 6 पर शुरू करने के लिए निर्दिष्ट किया है। इसलिए, उस स्ट्रिंग की अगली घटना की स्थिति वह थी जो लौटा दी गई थी।
ध्यान दें कि, हालांकि खोज स्थिति 6 पर शुरू हुई, फिर भी फ़ंक्शन स्ट्रिंग के भीतर सबस्ट्रिंग की स्थिति लौटाता है - प्रारंभ स्थिति से नहीं।
इसे स्पष्ट करने में सहायता के लिए यहां एक और उदाहरण दिया गया है।
SELECT
LOCATE('c', 'a b c', 1) AS 'Result 1',
LOCATE('c', 'a b c', 2) AS 'Result 2',
LOCATE('c', 'a b c', 4) AS 'Result 3'; परिणाम:
+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | +----------+----------+----------+ | 5 | 5 | 5 | +----------+----------+----------+
परिणाम वही होता है जहां हम खोजना शुरू करते हैं।
उदाहरण 3 - किसी शब्द के भाग का पता लगाना
सबस्ट्रिंग एक लंबे शब्द का हिस्सा हो सकता है:
SELECT LOCATE('sing', 'Increasingly') AS Result; परिणाम:
+--------+ | Result | +--------+ | 7 | +--------+
वास्तव में, इसके लिए एक शब्द होने की कोई आवश्यकता नहीं है (आखिरकार, हम केवल एक स्ट्रिंग खोज रहे हैं):
SELECT
LOCATE('z23!#', 'u_4, z23!#') AS 'Result 1',
LOCATE(' ', 'a b c') AS 'Result 2',
LOCATE(',', 'cat, dog, bird') AS 'Result 3'; परिणाम:
+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | +----------+----------+----------+ | 6 | 2 | 4 | +----------+----------+----------+
उदाहरण 4 - कोई मिलान नहीं
अगर सबस्ट्रिंग नहीं मिलती है, तो 0 लौटा दिया गया है:
SELECT LOCATE('Bat', 'Increasingly') AS Result; परिणाम:
+--------+ | Result | +--------+ | 0 | +--------+
उदाहरण 5 - केस संवेदनशीलता
यह फ़ंक्शन मल्टीबाइट सुरक्षित है, और केवल केस-संवेदी है यदि कम से कम एक तर्क एक बाइनरी स्ट्रिंग है।
इसलिए निम्नलिखित गैर-बाइनरी स्ट्रिंग्स पर काम करता है, भले ही मामला मेल नहीं खाता:
SELECT LOCATE('Sing', 'Increasingly') AS Result; परिणाम:
+--------+ | Result | +--------+ | 7 | +--------+
लेकिन अगर हम बाइनरी स्ट्रिंग का उपयोग करते हैं, तो ऐसा होता है:
SET @str = BINARY 'Increasingly';
SELECT LOCATE('Sing', @str) AS Result; परिणाम:
+--------+ | Result | +--------+ | 0 | +--------+
लेकिन निश्चित रूप से, अगर हम इसे बदलते हैं ताकि केस मैच हो जाए, तो हमें एक मैच मिलता है:
SET @str = BINARY 'Increasingly';
SELECT LOCATE('sing', @str) AS Result; परिणाम:
+--------+ | Result | +--------+ | 7 | +--------+
उदाहरण 6 - पूर्ण तर्क
यदि कोई तर्क NULL है ,
नल
लौटा दिया गया है:
SELECT
LOCATE(NULL, 'Increasingly') a,
LOCATE('Bat', NULL) b,
LOCATE('Bat', 'Increasingly', NULL) c; परिणाम:
+------+------+------+ | a | b | c | +------+------+------+ | NULL | NULL | NULL | +------+------+------+