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

अस्थायी तालिका पर प्रतीक डेटा फ़ील्ड को 5 कॉलम में कैसे विभाजित करें?

समाधान आसान है:

  1. मानों को \s से विभाजित करें (अंतरिक्ष) तत्वों के क्रम को संरक्षित करना
  2. परिणाम को पिवट करें
  3. विशिष्ट कॉलम से केवल संख्याएं या केवल अक्षर निकालें

मानों को विभाजित करने के लिए आप XML . का उपयोग कर सकते हैं जैसे यह . केवल नंबर निकालने के लिए आप REPLACE . की एक श्रृंखला निष्पादित कर सकते हैं सभी इकाइयों को हटा रहा है। संख्याओं को हटाने और टेक्स्ट छोड़ने के लिए, आप REPLACE . का उपयोग कर सकते हैं एस फिर से।

अपने परिवेश में, मैं बहुत से SQL CLR फ़ंक्शंस का उपयोग कर रहा हूँ और समाधान इस तरह दिखता है:

SELECT PVT.id
      ,PVT.symbolData
      ,dbo.fn_Utils_RegexReplace ([0], '[^\d+]', '') AS [valuebefore]
      ,dbo.fn_Utils_RegexReplace ([0], '\d+', '') AS [unitbefore]
      ,[1] AS [symbole]
      ,dbo.fn_Utils_RegexReplace ([2], '[^\d+\.]', '') AS [valueafter]
      ,dbo.fn_Utils_RegexReplace ([2], '[\d+\.]', '') AS [unitafter]
FROM #TEMP
CROSS APPLY dbo.fn_Utils_RegexSplitWithOrder (SymbolData, '\s') RS
PIVOT
(
    MAX([value]) FOR [index] IN ([0], [1], [2])
) PVT
ORDER BY PVT.id;

आप यह देख सकते हैं अपने परिवेश में भी ऐसे कार्यों को प्राप्त करने के लिए उत्तर दें।

आपके मामले में, डेटा को विभाजित करने और परिणामों को आकार देने के लिए प्रतिस्थापित करने के लिए XML का उपयोग करना आसान और सुरक्षित होगा।




  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 MERGE कथन परिणाम निर्धारित करना

  2. कैसे बताएं कि कोई आपके डेटाबेस के किसी एक रिकॉर्ड को देख रहा है या नहीं?

  3. CASCADE DELETE को सक्षम करने के लिए मैं किसी तालिका को कैसे संपादित करूं?

  4. जब डेटाबेस अपडेट किया गया है तो मैं अपने प्रोग्राम को कैसे सूचित कर सकता हूं?

  5. डायनामिक अनपिवट और स्प्लिट कॉलम SQL सर्वर 2012