मेरे पास निम्न स्ट्रिंग है (एक एडी विशिष्ट नाम):

CN=Surname\, Firstname (something),OU=Fixed6,OU=Department99,OU=Fixed5,OU=Fixed4,DC=Fixed3,DC=Fixed2,DC=Fixed

मुझे उसमें से "विभाग 99" को पार्स करने की आवश्यकता है ("ओयू =" की आवश्यकता नहीं है, और जरूरी नहीं कि "विभाग", केवल संख्या की आवश्यकता हो)। संख्या 99 कोई अन्य पूर्णांक हो सकती है, और दाईं ओर फ़ील्ड की संख्या निश्चित है, इसलिए यह हमेशा दाईं ओर से छठा फ़ील्ड है।

यदि यह संभव हो, तो मैं एक सहसंबंधित सबक्वायरी के साथ एक साधारण एकल चयन कथन के भीतर समाधान पसंद करूंगा।

धन्यवाद।

0
cheh 23 अगस्त 2017, 12:43

2 जवाब

सबसे बढ़िया उत्तर

2016 में उपलब्ध स्प्लिट स्ट्रिंग का उपयोग करने का एक और तरीका ..

select replace(value,'OU=Department','')
 from string_split(@String,',')
where value like '%department%'
1
TheGameiswar 23 अगस्त 2017, 12:55

यहाँ एक एकल SELECT समाधान है:

declare @s nvarchar(max) = 'CN=Surname\, Firstname (something),OU=Fixed6,OU=Department56,OU=Fixed5,OU=Fixed4,DC=Fixed3,DC=Fixed2,DC=Fixed'

select reverse(left(reverse(left(@s, charindex(',', @s, charindex('department', @s, 0)) - 1)), patindex('%[a-zA-Z]%', reverse(left(@s, charindex(',', @s, charindex('department', @s, 0)) - 1)))-1))

यह अधिकांश SQL सर्वर संस्करणों के लिए काम करेगा।

1
Radu Gheorghiu 23 अगस्त 2017, 12:52