Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tìm kiếm và thay thế toàn bộ giá trị cột SQL Server

Tôi hy vọng tôi đã hiểu nó một cách chính xác. Vì vậy, tôi sẽ lặp lại.

  1. Bạn có 1 bảng với rất nhiều mục nhập
  2. Bạn có danh sách này từ excel nơi bạn tìm kiếm "cột tìm kiếm"
  3. Trong trường hợp khớp, hãy thay thế toàn bộ giá trị bằng "cột thay thế"

Nếu đúng như vậy, đây có thể là giải pháp:

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

Bảng "dữ liệu" sẽ là bảng mà bạn thực hiện thay thế.

Có thể có một số tác dụng phụ khi sử dụng nó (ví dụ:các ký tự đại diện như% trong "search_column", có thể nhiều kết quả phù hợp - ngay bây giờ, một "ngẫu nhiên" được thực hiện, hiệu suất có thể không phải là tốt nhất, ...) Nhưng tôi đoán đối với một câu trả lời chính xác hơn, tôi cần một câu hỏi hay hơn.

Chỉnh sửa:

Cảm ơn Ralph ... Tôi đã thêm ưu tiên vào bảng "thay thế" để có thể xử lý các kết quả trùng lặp.

Trong trường hợp "RBC" có mức độ ưu tiên 3, kết quả là:

Với mức độ ưu tiên là 1, đó là:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server FileStream cách điền cột dòng lọc

  2. Truy xuất tên cột và kiểu của một thủ tục được lưu trữ?

  3. MONTH () Ví dụ trong SQL Server (T-SQL)

  4. Trong SQL Server, làm cách nào tôi có thể tìm thấy ở mọi nơi một cột được tham chiếu?

  5. MAMP có nên trả về ::1 dưới dạng IP trên localhost không?