एक स्ट्रिंग - एसक्यूएल, एसक्यूएल-सर्वर, tsql में गैर-प्रिंट करने योग्य वर्ण खोजने के लिए एसक्यूएल

मेरे एसक्यूएल प्रश्नों में से एक गैर-प्रिंट करने योग्य लौट रहा हैडेटा में वर्ण जिसके कारण मुझे रिपोर्ट में कोई त्रुटि मिलती है। कृपया मुझे बताएं कि मैं कैसे जांच सकता हूं कि स्ट्रिंग में टी-एसक्यूएल में गैर-प्रिंट करने योग्य वर्ण हैं, ताकि मैं उन पंक्तियों को ढूंढ सकूं और डेटा को ठीक कर सकूं? अग्रिम में धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

जब आप पता नहीं कौन सा गैर प्रिंट करने योग्य चरित्र समस्या पैदा कर रहा है, लेकिन आपने रिकॉर्ड की पहचान की है:

  1. प्रबंधन स्टूडियो और प्रतिलिपि में एक प्रश्न चलाएं ग्रिड से मुद्दों के साथ एक ज्ञात क्षेत्र
  2. फ़ील्ड को हेक्स संपादक में पेस्ट करें (पाठ भाग में पेस्ट करें), ताकि आप पात्रों के हेक्स देख सकें
  3. यदि आवश्यक हो, तो ASCII चार्ट के विरुद्ध प्रश्नों के प्रश्नों को देखें

अब आप या तो कर सकते हैं अद्यतन करें के साथ बदलने के अपने डेटा को साफ़ करने के लिए, या बस अपनी क्वेरी में सफाई करें, क्योंकि अब आप जानते हैं कि समस्या का कारण क्या है।


उत्तर № 2 के लिए 1

मिल गया इस:

WITH Num1 (n) AS (SELECT 1 UNION ALL SELECT 1),
Num2 (n) AS (SELECT 1 FROM Num1 AS X, Num1 AS Y),
Num3 (n) AS (SELECT 1 FROM Num2 AS X, Num2 AS Y),
Num4 (n) AS (SELECT 1 FROM Num3 AS X, Num3 AS Y),
Nums (n) AS (SELECT ROW_NUMBER() OVER(ORDER BY n) FROM Num4),
UpdateCTE
AS
(SELECT keycol, DesNM,
(SELECT CASE WHEN ASCII(SUBSTRING(DesNM, n, 1))
BETWEEN 0x00 AND 0x1F
THEN ""
ELSE SUBSTRING(DesNM, n, 1)
END + ""
FROM I2DE AS B
JOIN Nums
ON n <= LEN(DesNM)
WHERE B.keycol = A.keycol
FOR XML PATH("")) AS DesNM_clean
FROM I2DE AS A)
UPDATE UpdateCTE
SET DesNM = DesNM_clean;

इसमें कुछ भाग हैं, एक उत्पन्न कर रहा हैसंख्याओं के साथ एक टेबल फ्लाई पर (NumX सीटीई का उपयोग करके), फिर कॉलम को व्यक्तिगत रूप से टुकड़ा कर रहा है अक्षर, यदि यह सीमा में है तो प्रत्येक को जांचना, फिर इसे छोड़ना, आखिरकार एक्सएमएल पाथ का उपयोग करके एक ही मूल्य पर वापस आना।


जवाब के लिए 0 № 3

मैंने पाया कि कुछ कॉलम में वर्ण CHAR (0) था जो इस समस्या का कारण बन रहा था। मैंने उन्हें शून्य से बदल दिया और यह काम किया।


संबंधित सवाल
सबसे लोकप्रिय