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

कॉलम डेटा को पंक्तियों में विभाजित करने के लिए SQL क्वेरी

इस प्रकार के डेटा पृथक्करण के लिए, मैं एक स्प्लिट फ़ंक्शन बनाने का सुझाव दूंगा:

create FUNCTION [dbo].[Split](@String varchar(MAX), @Delimiter char(1))       
returns @temptable TABLE (items varchar(MAX))       
as       
begin      
    declare @idx int       
    declare @slice varchar(8000)       

    select @idx = 1       
        if len(@String)<1 or @String is null  return       

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice = left(@String,@idx - 1)       
        else       
            set @slice = @String       

        if(len(@slice)>0)  
            insert into @temptable(Items) values(@slice)       

        set @String = right(@String,len(@String) - @idx)       
        if len(@String) = 0 break       
    end   
return 
end;

फिर एक प्रश्न में इसका उपयोग करने के लिए आप एक outer apply . का उपयोग कर सकते हैं अपनी मौजूदा तालिका में शामिल होने के लिए:

select t1.code, s.items declaration
from yourtable t1
outer apply dbo.split(t1.declaration, ',') s

जो परिणाम देगा:

| CODE |  DECLARATION |
-----------------------
|  123 |     a1-2 nos |
|  123 |  a2- 230 nos |
|  123 |    a3 - 5nos |

डेमो के साथ SQL Fiddle देखें

या आप इसके समान एक सीटीई संस्करण लागू कर सकते हैं:

;with cte (code, DeclarationItem, Declaration) as
(
  select Code,
    cast(left(Declaration, charindex(',',Declaration+',')-1) as varchar(50)) DeclarationItem,
         stuff(Declaration, 1, charindex(',',Declaration+','), '') Declaration
  from yourtable
  union all
  select code,
    cast(left(Declaration, charindex(',',Declaration+',')-1) as varchar(50)) DeclarationItem,
    stuff(Declaration, 1, charindex(',',Declaration+','), '') Declaration
  from cte
  where Declaration > ''
) 
select code, DeclarationItem
from cte


  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 सर्वर में एक स्कीमा बाउंड UDF बनाएँ

  2. उदाहरण पर हमेशा उपलब्धता समूह में SQL सर्वर में पारदर्शी डेटा एन्क्रिप्शन (TDE)

  3. एसक्यूएल सर्वर में पंक्ति संख्या पर आंतरिक शामिल कैसे करें?

  4. डेटाबेस और रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) क्या है

  5. SQL तालिका से डुप्लिकेट पंक्तियों को हटाना (एकाधिक स्तंभों के मानों के आधार पर)