sql >> Databáze >  >> RDS >> Sqlserver

Vyhledejte a nahraďte celou hodnotu sloupce SQL Server

Doufám, že jsem to pochopil správně. Budu se tedy opakovat.

  1. Máte 1 stůl se spoustou položek
  2. Tento seznam máte z aplikace Excel, kde hledáte „sloupec vyhledávání“
  3. V případě shody nahraďte celou hodnotu výrazem "nahradit sloupec"

Pokud je to tento případ, pak by mohlo být řešením toto:

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

Tabulka "data" by byla ta, kde provedete nahrazení.

Použití toho může mít docela nějaké vedlejší efekty (např. zástupné znaky jako % ve „sloupec_hledání“, možná více shod – právě teď se vezme „náhodný“, výkon nemusí být nejlepší, ...) Ale myslím, že pro přesnější odpověď Potřeboval bych lepší otázku.

Upravit:

Díky Ralphovi... přidal jsem prioritu do tabulky "nahradit", abych mohl zpracovávat duplicitní zápasy.

V případě, že "RBC" má prioritu 3, výsledek je:

S prioritou 1 je:




  1. Meta příkazy v Psycopg2 - \d nefungují

  2. Struktura/design databáze

  3. PDOStatement::execute() vrací true, ale data se neaktualizují

  4. Architektura SQL Server AlwaysOn ( Availability Group ) a instalace krok za krokem -3 kroky ručního selhání