Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

बार-बार दोहराए गए वर्णों को हटाना

यह उन स्ट्रिंग्स के लिए काम करता है जो विशेष रूप से अल्पविराम हैं या जिनमें 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 वर्णों तक के अल्पविरामों के वर्गों से निपट सके।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्पॉटलाइट क्लाउड अलार्म कस्टमाइज़ करें

  2. क्रिस्टल रिपोर्ट के डेटा प्रदाता को अद्यतन करना

  3. SQL सर्वर 2008:डुप्लिकेट पंक्तियों को हटाएं

  4. SQL सर्वर - डर्टी पेशेवरों और विपक्षों को पढ़ता है

  5. तालिका से एकत्रित मानों के साथ SQL INSERT स्क्रिप्ट बनाएं