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;

फिर अपनी संग्रहीत कार्यविधि में, आप अपनी स्ट्रिंग को विभाजित करने के लिए फ़ंक्शन को कॉल करेंगे:

ALTER PROCEDURE [dbo].[spInsertDistributionRuleListType]
(
  @Rule_ID int,
  @ListType_ID int,
  @Values VARCHAR(MAX)=NULL
)
AS
BEGIN

    INSERT INTO DistributionRule_x_ListType (Rule_ID, ListType_ID, Value)
    SELECT @Rule_ID, @ListType_ID, items
    FROM [dbo].[Split] (@Values, ',')  -- call the split function 

END

जब आप संग्रहीत कार्यविधि को निष्पादित करते हैं, तो यह मानों को विभाजित कर देगा और आपकी तालिका में एकाधिक पंक्तियों को सम्मिलित करेगा:

exec spInsertDistributionRuleListType 1, 2, '319,400,521,8465,2013';

डेमो के साथ SQL Fiddle देखें। यह निम्नलिखित परिणाम सम्मिलित करेगा:

| RULE_ID | LISTTYPE_ID | VALUE |
---------------------------------
|       1 |           1 |    10 |
|       1 |           2 |   319 |
|       1 |           2 |   400 |
|       1 |           2 |   521 |
|       1 |           2 |  8465 |
|       1 |           2 |  2013 |


  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. SQL सर्वर में CONVERT () के साथ उपलब्ध दिनांक स्वरूपों की सूची

  3. SQL सर्वर में एकाधिक कॉलम पर विदेशी कुंजी बाधा कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 67

  4. डेटाबेस मेल लॉग इन SQL सर्वर (T-SQL) से ईवेंट हटाएं

  5. SQL सर्वर (T-SQL) में कॉलम का डेटा प्रकार प्राप्त करने के 3 तरीके