Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wyszukaj i zamień całą wartość kolumny SQL Server

Mam nadzieję, że dobrze to zrozumiałem. Więc powtórzę.

  1. Masz 1 tabelę z dużą ilością wpisów
  2. Masz tę listę z programu Excel, w której szukasz „kolumny wyszukiwania”
  3. W przypadku dopasowania, zamień całą wartość na „zamień kolumnę”

W takim przypadku może to być rozwiązanie:

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

Tabela „dane” będzie tą, w której dokonujesz zamiany.

Użycie tego może powodować pewne efekty uboczne (np. symbole wieloznaczne, takie jak % w „kolumnie_wyszukiwania”, może wiele dopasowań – w tej chwili bierze się „losowy”, wydajność może nie być najlepsza, ...) Ale myślę, że dla bardziej precyzyjna odpowiedź, potrzebuję lepszego pytania.

Edytuj:

Dzięki Ralphowi... dodałem priorytet do tabeli "zamień", aby móc obsłużyć zduplikowane mecze.

W przypadku, gdy „RBC” ma priorytet 3, wynik jest następujący:

Przy priorytecie 1 jest to:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie dynamicznej klauzuli where w procedurze składowanej SQL Server

  2. Funkcja w SQL Server 2008 podobna do GREATEST w mysql?

  3. Jak uwzględnić całkowitą liczbę zwróconych wierszy w zestawie wyników z polecenia SELECT T-SQL?

  4. Typ danych VarBinary vs Image SQL Server do przechowywania danych binarnych?

  5. Dodaj logowanie do serwera połączonego w programie SQL Server (przykład T-SQL)