2016-01-13 12 views
5

में टैब स्पेस को अग्रणी और पिछली टैब ट्रिम करने के लिए कैसे करें मेरे पास डेटा है जिसमें स्ट्रिंग में अग्रणी और पिछली जगहें हैं। डेटाबेस में उस डेटा को संग्रहीत करते समय मैं डीबी में संग्रहीत करने से पहले क्वेरी में क्वेरी को ट्रिम करना चाहता हूं।MSSQL क्वेरी

सामान्य रिक्त स्थान RTRIM और LTRIM फ़ंक्शन के साथ ठीक से ट्रिम कर रहे हैं, लेकिन यदि किसी स्ट्रिंग में टैब स्पेस होता है, तो यह इनपुट स्ट्रिंग से टैब स्पेस को ट्रिम नहीं करता है।

क्या कोई मुझे अग्रणी और पीछे से टैब स्थान के साथ छंटनी के साथ स्ट्रिंग प्राप्त करने में मदद कर सकता है।

+1

रिक्त स्थान के साथ सभी टैब को प्रतिस्थापित करें, इंटरमीडिएट स्ट्रिंग को ट्रिम करें, फिर रिक्त स्थान को टैब में कनवर्ट करें? –

उत्तर

6

टैब के लिए ASCII कोड (9) बदलें:

replace(@str, char(9), '') 

करने के लिए केवल बाहरी टैब को हटाने, सबसे पहले उन्हें कुछ है कि आपके डेटा में मौजूद नहीं होगा (मैं में चार रिक्त स्थान की एक श्रृंखला का उपयोग करने के लिए बदल इस उदाहरण), तो rtrim/ltrim, तो टैब को वापस कि उसी क्रम में परिवर्तित:

replace(ltrim(rtrim(replace(@str, char(9), ' '))),' ', char(9)); 
+1

यह स्ट्रिंग के बीच में सभी टैब स्पेस को भी बदल देगा, मैं केवल अग्रणी और पिछली जगह चाहता हूं। – user3876801

+0

@ user3876801 मैंने इस परिदृश्य को शामिल करने के लिए उत्तर को अद्यतन किया। – morgb

+0

प्रदर्शन के बारे में क्या है यदि डेटा बहुत बड़ा है क्योंकि डेटा को बदलने के लिए कई बार फ़ंक्शन प्रतिस्थापित किया जा रहा है। – user3876801

0

इस प्रयास करें:

DECLARE @InputString nvarchar(50) = CHAR(9) + CHAR(9) + ' 123'+ 'abc ' + CHAR(9); 
SELECT @InputString AS InputString 
     ,REVERSE(RIGHT(REVERSE(RIGHT(@InputString, LEN(@InputString) - PATINDEX('%[^'+CHAR(9)+']%', @InputString) + 1)), LEN(REVERSE(RIGHT(@InputString, LEN(@InputString) - PATINDEX('%[^'+CHAR(9)+']%', @InputString) + 1))) - PATINDEX('%[^'+CHAR(9)+']%', REVERSE(RIGHT(@InputString, LEN(@InputString) - PATINDEX('%[^'+CHAR(9)+']%', @InputString) + 1))) + 1)) AS OutputString 
; 

शायद आपको इसे एक समारोह के रूप में दोबारा करना चाहिए। नोट, यह केवल एसक्यूएल सर्वर 2008 से ऊपर काम कर सकता है। आप CHAR (9) को किसी भी चरित्र में बदल सकते हैं जिसे आप ट्रिम करना चाहते हैं।

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