यह उन स्ट्रिंग्स के लिए काम करता है जो विशेष रूप से अल्पविराम हैं या जिनमें 398 तक सन्निहित अल्पविराम हैं।
SELECT
CASE
WHEN TargetString NOT LIKE '%[^,]%'
THEN '' /*The string is exclusively commas*/
ELSE
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TargetString,
REPLICATE(',',16),','), /*399/16 = 24 remainder 15*/
REPLICATE(',',8),','), /* 39/ 8 = 4 remainder 7*/
REPLICATE(',',4),','), /* 11/ 4 = 2 remainder 3*/
REPLICATE(',',2),','), /* 5/ 2 = 2 remainder 1*/
REPLICATE(',',2),',') /* 3/ 2 = 1 remainder 1*/
END
FROM T
यदि आपको अधिक की आवश्यकता है तो शीर्ष पर 2 की अतिरिक्त शक्तियां जोड़ें या यदि आपको कम चाहिए तो ऊपर से हटा दें। प्रत्येक चरण की टिप्पणियां उस छोटी से छोटी संख्या को इंगित करती हैं जिससे यह चरण सफलतापूर्वक निपट नहीं पाएगा।
सभी टिप्पणी पंक्तियाँ इस प्रारूप में हैं
/* L/D = Q remainder R */
D: Corresponds to the length of the string generated by `REPLICATE`
R: Is always D-1
Q+R: Form L for the next step
तो श्रृंखला को एक और REPLICATE(',',32),',')
के साथ ऊपर की ओर बढ़ाने के लिए मंच
D = 32
R = 31
Q = 368 (399-31)
L = (368 * 32) + 31 = 11807
ताकि यह 11,806 वर्णों तक के अल्पविरामों के वर्गों से निपट सके।