T-SQL में IndexOf फ़ंक्शन


168

ईमेल पते के कॉलम को देखते हुए, मुझे सब्स्ट्रिंग के लिए @ चिह्न की स्थिति का पता लगाना होगा।

indexofT-SQL में स्ट्रिंग्स के लिए फ़ंक्शन क्या है ?

किसी चीज की तलाश करना जो स्ट्रिंग के भीतर एक विकल्प की स्थिति लौटाता है।

C # में

var s = "abcde";
s.IndexOf('c'); // yields 2

जवाबों:


248

CHARINDEX वही है जो आप ढूंढ रहे हैं

select CHARINDEX('@', 'someone@somewhere.com')
-----------
8

(1 row(s) affected)

-या-

select CHARINDEX('c', 'abcde')
-----------
3

(1 row(s) affected)

67

आप वर्ण स्ट्रिंग में निर्दिष्ट अभिव्यक्ति की प्रारंभिक स्थिति को लौटाने के लिए या तो CHARINDEX या PATINDEX का उपयोग कर सकते हैं ।

CHARINDEX('bar', 'foobar') == 4
PATINDEX('%bar%', 'foobar') == 4

मन कि आप दोनों तरफ PATINDEX में वाइल्डकार्ड का उपयोग करने की आवश्यकता है।


35

लेने के लिए एक बहुत छोटा सा निट:

ईमेल पतों के लिए RFC पहले भाग को "@" चिह्न को शामिल करने की अनुमति देता है यदि यह उद्धृत किया जाता है। उदाहरण:

"john@work"@myemployer.com

यह काफी असामान्य है, लेकिन हो सकता है। सैद्धांतिक रूप से, आपको अंतिम "@" प्रतीक पर विभाजित करना चाहिए , पहले नहीं:

SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1

अधिक जानकारी:

http://en.wikipedia.org/wiki/Email_address


ये उन चीजों के प्रकार हैं जिन्हें मैं अपने डेटाबेस में निर्धारित करने और ठीक करने की कोशिश कर रहा हूं। मुख्य रूप से लोग अपने डोमेन नाम को गलत बताते हैं। अधिकांश वेब वास्तविक एक पर वापस जाते हैं, लेकिन एमएक्स रिकॉर्ड आगे नहीं बढ़ते हैं, और उन्हें प्रदर्शित करना अजीब हो जाता है
विकासशील

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.