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

कॉलम में शब्दों को कैसे पलटें

इस कार्य को पूरा करने के लिए एक टी-एसक्यूएल फ़ंक्शन और एक कर्सर की आवश्यकता होगी। fn_SplitList आपको एक सीमांकक के आधार पर विभाजित करने की अनुमति देगा। एक बार आपके पास यह फ़ंक्शन हो जाने पर आप प्रत्येक रिकॉर्ड को अपडेट करने वाले अपने डेटा के विरुद्ध चलने के लिए एक कर्सर बना सकते हैं। मैंने @table1 का उपयोग करके एक उदाहरण बनाया है।

समारोह

CREATE FUNCTION [dbo].[fn_SplitList]
(
    @RowData varchar(8000),
    @SplitOn varchar(5)
)  
RETURNS @RtnValue table 
(
    Id int identity(1,1),
    Data varchar(100)
) 
AS  
BEGIN 
    Declare @Cnt int
    Set @Cnt = 1

    While (Charindex(@SplitOn,@RowData)>0)
    Begin
        Insert Into @RtnValue (data)
        Select 
            Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))

        Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
        Set @Cnt = @Cnt + 1
    End

    Insert Into @RtnValue (data)
    Select Data = ltrim(rtrim(@RowData))

    Return
END

अद्यतन करने के लिए कोड

declare @table1 table(id int primary key
                     ,words varchar(max))
declare @id int
declare @words varchar(max)

insert into @table1 values(0, 'word1, word2, , word3, word4')
insert into @table1 values(1, 'word1, word2, word3, ,')
insert into @table1 values(2, 'word1,,,, ; word2')
insert into @table1 values(3, ';word1 word2, word3')

declare updateCursor cursor for
select id
      ,words
  from @table1

open updateCursor   
fetch next from updateCursor into @id, @words
while @@fetch_status = 0
begin
  declare @row varchar(255)

  select @row = coalesce(@row+', ', '') + data
    from dbo.fn_SplitList(@words, ',')
  order by id desc

  update @table1
     set words = @row
   where id = @id

  fetch next from updateCursor into @id, @words
end
close updateCursor   
deallocate updateCursor

select *
  from @table1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो स्तंभों में से एक में पैरामीटर के साथ पंक्तियाँ खोजें?

  2. एसक्यूएल - महीने और महीने के नामों के पहले दिन की एक अस्थायी तालिका या सीटीई बनाएं

  3. त्रुटि 28000:pyodbc के साथ DOMAIN\\user उपयोगकर्ता के लिए लॉगिन विफल रहा

  4. SQL सर्वर 2012 के साथ एंटिटी फ्रेमवर्क 6 System.Data.Entity.Core.ProviderIncompatibleException देता है

  5. समानार्थी के सभी कॉलम नाम कैसे खोजें