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.
- Bạn có 1 bảng với rất nhiều mục nhập
- Bạn có danh sách này từ excel nơi bạn tìm kiếm "cột tìm kiếm"
- 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à: