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

CHARINDEX () फ़ंक्शन SQL सर्वर (T-SQL) में कैसे काम करता है

SQL सर्वर में, आप T-SQL का उपयोग कर सकते हैं CHARINDEX() किसी अन्य वर्ण व्यंजक के भीतर किसी वर्ण व्यंजक की आरंभिक स्थिति खोजने के लिए कार्य करता है।

आप दोनों चरित्र भाव को तर्क के रूप में प्रदान करते हैं। खोज शुरू करने के लिए स्थिति निर्दिष्ट करने के लिए आप एक वैकल्पिक तर्क भी प्रदान कर सकते हैं।

सिंटैक्स

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

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

जहां expressionToFind वह अभिव्यक्ति है जिसे आप अन्य स्ट्रिंग में खोजना चाहते हैं, और expressionToSearch दूसरी स्ट्रिंग है। वैकल्पिक start_location expressionToSearch . के भीतर स्थिति निर्दिष्ट करने के लिए इस्तेमाल किया जा सकता है जिसके लिए खोजना शुरू करना है।

ध्यान दें कि केवल पहली घटना की स्थिति लौटा दी जाती है।

उदाहरण

यहां एक उदाहरण दिया गया है:

SELECT CHARINDEX('Bob', 'Bob likes beer. Bob also likes beef.') AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| 1        |
+----------+

इस उदाहरण में, पहला तर्क Bob है , जिसका अर्थ है कि हम Bob . के लिए दूसरा तर्क खोज रहे हैं . परिणाम 1 है क्योंकि यह वह स्थिति है जहां Bob पहले दूसरे तर्क में प्रकट होता है।

आप यह भी देख सकते हैं कि Bob वास्तव में स्ट्रिंग में दो बार दिखाई देता है, लेकिन केवल पहले मैच की स्थिति लौटा दी जाती है।

कोई मिलान नहीं

यदि दूसरे तर्क में Bob नहीं था नतीजा 0 होता ।

SELECT CHARINDEX('Bob', 'Kate likes beer. Kate also likes beef.') AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| 0        |
+----------+

प्रारंभिक स्थिति निर्दिष्ट करना

आप (वैकल्पिक रूप से) खोज के लिए प्रारंभिक स्थिति निर्दिष्ट कर सकते हैं। इसका मतलब है कि SQL सर्वर उस प्रारंभिक स्थिति से पहले आने वाली किसी भी घटना को छोड़ देगा। हालांकि, परिणाम अभी भी पूरी स्ट्रिंग के भीतर इसकी स्थिति के आधार पर रिपोर्ट किए जाते हैं (आपके चुने हुए प्रारंभिक स्थान से नहीं)।

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:

SELECT CHARINDEX('Bob', 'Bob likes beer. Bob also likes beef.', 16) AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| 17       |
+----------+

इस उदाहरण में हम स्थिति 16 पर खोज करना शुरू करते हैं (जो दूसरे Bob से पहले का स्थान होता है। ) नतीजा यह है कि Bob . की पहली घटना छोड़ दिया जाता है, और दूसरे की स्थिति वापस कर दी जाती है। और हम देख सकते हैं कि इसकी स्थिति स्ट्रिंग की शुरुआत से 17 वर्णों की है (भले ही यह केवल एक वर्ण है जहाँ से हमने खोजना शुरू किया है)।

केस-सेंसिटिविटी

आप COLLATE . जोड़कर स्पष्ट रूप से केस-संवेदी खोज कर सकते हैं अपने SELECT . का खंड कथन:

यहां एक उदाहरण दिया गया है जिसमें केस-संवेदी खोज और केस-संवेदी खोज शामिल हैं:

SELECT 
  CHARINDEX('Beer', 'Bob likes beer.' COLLATE Latin1_General_CS_AS) AS 'Case-Sensitive',
  CHARINDEX('Beer', 'Bob likes beer.' COLLATE Latin1_General_CI_AS) AS 'Case-Insensitive';

परिणाम:

+------------------+--------------------+
| Case-Sensitive   | Case-Insensitive   |
|------------------+--------------------|
| 0                | 11                 |
+------------------+--------------------+

पहला केस-संवेदी है क्योंकि _CS (संयोजन में) केस-सेंसिटिव के लिए खड़ा है। दूसरा केस-संवेदी है क्योंकि _CI केस-असंवेदनशील के लिए खड़ा है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर अलगाव स्तर:एक श्रृंखला

  2. SQL सर्वर में उपलब्ध विभिन्न प्रकार की बाधाएँ क्या हैं - SQL सर्वर / T-SQL ट्यूटोरियल भाग 50

  3. समूह द्वारा खंड के साथ SQL अल्पविराम से अलग पंक्ति

  4. T-SQL का उपयोग करके SQL सर्वर एजेंट XP को कैसे सक्षम करें

  5. मेरा VARCHAR(MAX) फ़ील्ड स्वयं को 4000 पर सीमित कर रहा है; क्या दिया?