मैं टेबल के लिए टी-एसक्यूएल चयन विवरण उत्पन्न कर रहा हूं जिसके लिए मेरे पास डेटा प्रकार की जानकारी सामने नहीं है। इन बयानों में, मुझे स्ट्रिंग मैनिपुलेशन ऑपरेशन करने की आवश्यकता है जो टेबल के कॉलम के मूल मान की लंबाई पर निर्भर करता है।टी-एसक्यूएल: अक्षरों में स्ट्रिंग की सटीक लंबाई कैसे प्राप्त करें?
एक उदाहरण है (न कि केवल एक) अंत में सम्मिलित करने का विकल्प भी शामिल है, एक स्ट्रिंग में एक विशिष्ट स्थान पर कुछ पाठ डालने के लिए है:
SELECT
CASE WHEN (LEN ([t0].[Product] = 8)
THEN [t0].[Product] + 'test'
ELSE STUFF ([t0].[Product], 8, 0, 'test')
END
FROM [OrderItem] [t0]
(मामला है जब + LEN है की आवश्यकता है क्योंकि STUFF मुझे एक स्ट्रिंग के अंत में पाठ डालने के लिए।)
समस्या यह है कि LEN अनुगामी रिक्त स्थान है, जो गणना को बर्बाद होगा शामिल नहीं है की अनुमति नहीं है। मैं जानता हूँ कि मैं DATALENGTH, जो रिक्त स्थान अनुगामी को अलग नहीं करता उपयोग कर सकते हैं, लेकिन मैं क्योंकि मैं नहीं पता कि उत्पाद स्तंभ प्रकार varchar या nvarchar की है बाइट्स STUFF के लिए आवश्यक वर्णों तक DATALENGTH द्वारा वापस नहीं बदल सकते।
तो, कैसे मैं एक एसक्यूएल बयान है कि सामने स्ट्रिंग डेटा प्रकार के बारे में जानकारी का उपयोग किया जा रहा है बिना पात्रों में एक स्ट्रिंग की सटीक लंबाई पर निर्भर करता है उत्पन्न कर सकते हैं?
+1 जो समाधान के लिए काम करता है! –
+1 यह एक उपयोगी चाल हो सकता है। –