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

ASCII विस्तारित वर्ण 128 आगे (एसक्यूएल) निकालें

जुड़ा हुआ समाधान एक लूप का उपयोग कर रहा है - यदि संभव हो - कुछ ऐसा जो आपको टालना चाहिए।

मेरा समाधान पूरी तरह से इनलाइन करने योग्य है, इससे UDF (या शायद इससे भी बेहतर:एक इनलाइन TVF) बनाना आसान है।

विचार:चलने वाली संख्याओं का एक सेट बनाएं (यहां यह sys.objects में ऑब्जेक्ट्स की गिनती के साथ सीमित है, लेकिन फ्लाई पर नंबर टैली कैसे बनाएं उदाहरण के बहुत सारे उदाहरण हैं)। दूसरे CTE में स्ट्रिंग्स को सिंगल कैरेक्टर में विभाजित किया जाता है। अंतिम चयन साफ ​​स्ट्रिंग के साथ वापस आता है।

DECLARE @tbl TABLE(ID INT IDENTITY, EvilString NVARCHAR(100));
INSERT INTO @tbl(EvilString) VALUES('ËËËËeeeeËËËË'),('ËaËËbËeeeeËËËcË');

WITH RunningNumbers AS
(
    SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Nmbr
    FROM sys.objects
)
,SingleChars AS
(
    SELECT tbl.ID,rn.Nmbr,SUBSTRING(tbl.EvilString,rn.Nmbr,1) AS Chr
    FROM @tbl AS tbl
    CROSS APPLY (SELECT TOP(LEN(tbl.EvilString)) Nmbr FROM RunningNumbers) AS rn 
)
SELECT ID,EvilString
      ,(
        SELECT '' + Chr 
        FROM SingleChars AS sc
        WHERE sc.ID=tbl.ID AND ASCII(Chr)<128
        ORDER BY sc.Nmbr
        FOR XML PATH('')
      ) AS GoodString
FROM @tbl As tbl

परिणाम

1   ËËËËeeeeËËËË    eeee
2   ËaËËbËeeeeËËËcË abeeeec

यहां एक और जवाब है मुझ से जहां इस दृष्टिकोण का उपयोग सभी विशेष . को बदलने के लिए किया जाता है सुरक्षित . वाले वर्ण सादा लैटिन . पाने के लिए वर्ण




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस में सभी तालिकाओं के लिए पंक्ति गणना कैसे प्राप्त करें?

  2. मैं EntityFramework 7 और Asp.Net 5 का उपयोग करके SQL संग्रहीत कार्यविधि को कैसे कॉल कर सकता हूँ?

  3. MS SQL सर्वर में अटकी हुई प्रक्रियाओं का स्वचालित विलोपन

  4. पाइप सीमांकित टेक्स्ट फ़ाइल डेटा को SQLServer तालिका में कैसे आयात करें

  5. जब IDENTITY_INSERT को OFF पर सेट किया जाता है, तो SQL तालिका 'तालिका' में पहचान कॉलम के लिए स्पष्ट मान सम्मिलित नहीं कर सकता है