sql >> Databasteknik >  >> RDS >> Sqlserver

Sök och ersätt hela kolumnvärdet SQL Server

Jag hoppas att jag förstod det rätt. Så jag ska upprepa.

  1. Du har en tabell med många poster
  2. Du har den här listan från excel där du söker efter "sökkolumnen"
  3. I händelse av en matchning, ersätt hela värdet med "ersätt kolumn"

Om så är fallet kan det här vara lösningen:

declare @data table (Column1 nvarchar(50))

insert  into @data
        (Column1)
values  (N'RbC investment for Seniors 65+'),
        (N'RBC inv for juniors')

declare @replace table
    (
     OriginalValue nvarchar(50),
     NewValue nvarchar(50),
     [priority] int
    )

insert  into @replace
        (OriginalValue, NewValue, [priority])
values  (N'rbc inv', N'RBC dominion securities', 2),
        (N'rbc dom', N'RBC dominion securities', 2),
        (N'RBC', N'RBC Bank', 3)

update  @data
set     Column1 = coalesce((
                            select top 1
                                    NewValue
                            from    @replace
                            where   Column1 like '%' + OriginalValue + '%'
                            order by [priority]
                           ), Column1)

select  *
from    @data

Tabellen "data" skulle vara den där du byter ut.

Det kan finnas en del biverkningar med det (t.ex. jokertecken som % i "search_column", kanske flera matchningar - just nu tas en "slumpmässig" en, prestandan kanske inte är den bästa, ...)Men jag antar för ett mer exakt svar skulle jag behöva en bättre fråga.

Redigera:

Tack vare Ralph... Jag lade till en prioritet till tabellen "ersätt" för att kunna hantera dubbletter av matchningar.

Om "RBC" har prioritet 3 blir resultatet:

Med prioritet 1 är det:




  1. Infogar rader i en tabell med endast en IDENTITY-kolumn

  2. Hur man lägger in JSON i en kolumndata om sub-query returnerar mer än 1 rad i MySQL

  3. Anropa en lagrad procedur med parameter i c#

  4. Finns det något sätt att lägga till kolumn på en angiven position i Oracle-tabellen?