2010-05-27 16 views
7

की अंतिम अनुक्रमणिका मैं सबस्ट्रिंग के साथ अटक गया है।एसक्यूएल सबस्ट्रिंग और

इनपुट पर मुझे एक स्ट्रिंग मिली है जो Sometext (123456) जैसा दिखता है। अंत में वे अंक यादृच्छिक हैं। मुझे उस स्ट्रिंग से केवल टेक्स्ट प्राप्त करने की आवश्यकता है।

+0

अधिक उदाहरण हैं। तो आप "Sometext()" बाहर या "Sometext" चाहते हैं? क्या होगा यदि आपके पास "Sometext (123ABC456          )"? – gbn

+0

मेरे पास ब्रेसिज़ के अंदर केवल अंक हैं –

उत्तर

9

इस बारे में कैसे?

DECLARE @Data TABLE (Val VARCHAR(20)) 
INSERT @Data VALUES ('Sometext (123456)') 
INSERT @Data VALUES ('') 
INSERT @Data VALUES (NULL) 
INSERT @Data VALUES ('S(123456)') 
INSERT @Data VALUES ('(123456)') 

SELECT 
    CASE 
     WHEN CHARINDEX('(', Val) > 0 THEN 
      RTRIM(SUBSTRING(val,1, CHARINDEX('(', Val) - 1)) 
     ELSE Val 
    END 
FROM @Data 
1

तुम सिर्फ अप करने के लिए पहले भाग चाहते हैं '(' आप

declare @t varchar(50) 
set @t = 'function (12343)' 

select rtrim(substring(@t,1, charindex('(', @t)-1)) 
3

की कोशिश कर सकते यह वास्तव में अपने इनपुट स्ट्रिंग के प्रारूप पर निर्भर करता है, लेकिन यहां एक अलग दृष्टिकोण है का उपयोग करते हुए PATINDEX जब तक यह एक गैर AZ चरित्र से मेल खाता है कि स्ट्रिंग वापस आ जाएगी:।

declare @text varchar(500); set @text = 'Sometext (123456)' 
select SUBSTRING(@text, 0, PATINDEX('%[^A-Z]%' , @text)) 
4

हम वाक्य को हटाने और संख्या हम इस तरह कर सकते हैं रखना चाहते हैं

0,123,
DECLARE @Text VARCHAR(MAX); 
SET @Text = 'Sometext (123456)' 

SELECT SUBSTRING(@Text, CHARINDEX(' ', @Text) + 1, LEN(@Text)) As TextOutput 

परिणाम होगा: (123456)

संबंधित मुद्दे