Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Търсене и замяна на цялата стойност на колона SQL Server

Дано съм го разбрал правилно. Така че ще повторя.

  1. Имате 1 таблица с много записи
  2. Имате този списък от Excel, където търсите „колона за търсене“
  3. В случай на съвпадение, заменете цялата стойност с „замяна на колона“

Ако това е така, тогава това може да е решението:

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

Таблицата „данни“ ще бъде тази, в която извършвате замяната.

Може да има доста странични ефекти при използване на това (напр. заместващи символи като % в "search_column", може би множество съвпадения - в момента се взема "произволно" едно, производителността може да не е най-добрата, ...) Но предполагам, че за по-точен отговор, ще ми трябва по-добър въпрос.

Редактиране:

Благодарение на Ралф... Добавих приоритет към таблицата "замяна", за да мога да обработвам дублирани съвпадения.

В случай, че "RBC" има приоритет 3, резултатът е:

С приоритет 1 е:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да коригирате „Отказът на ALTER TABLE SWITCH е неуспешен“ Msg 4982 (SQL Server)

  2. Use Case Statement в Join

  3. Препоръчителни процесори Intel за SQL Server 2014 – март 2015 г

  4. Как да премахна колона с обектни зависимости в SQL Server 2008?

  5. Обединяване на припокриващи се интервали от дата