sql >> Database >  >> RDS >> Sqlserver

Zoek en vervang de volledige kolomwaarde SQL Server

Ik hoop dat ik het goed heb begrepen. Dus ik herhaal.

  1. Je hebt 1 tafel met veel inschrijvingen
  2. Je hebt deze lijst van Excel waar je zoekt naar de "zoekkolom"
  3. In het geval van een overeenkomst, vervang dan de hele waarde door "vervang kolom"

Als dit het geval is, dan is dit misschien de oplossing:

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

De tabel "data" zou degene zijn waarin u de vervanging doet.

Er kunnen nogal wat bijwerkingen zijn (bijv. jokertekens zoals % in "search_column", misschien meerdere overeenkomsten - op dit moment wordt er een "willekeurige" genomen, de uitvoering is misschien niet de beste, ...) een nauwkeuriger antwoord zou ik een betere vraag nodig hebben.

Bewerken:

Dankzij Ralph... heb ik een prioriteit toegevoegd aan de "vervang"-tabel om dubbele overeenkomsten te kunnen verwerken.

Als "RBC" prioriteit 3 ​​heeft, is het resultaat:

Met een prioriteit van 1 is het:




  1. Zijn drop-down geselecteerde velden kwetsbaar voor elke vorm van injectie?

  2. Waarom is null<>null=null in mysql

  3. Welke manieren zijn er om informatie over een anonieme/gastgebruiker op te slaan in een database?

  4. Selecteer in statement waar bron een andere database is