मुझे आशा है कि मैंने इसे सही ढंग से समझा। तो मैं दोहराऊंगा।
- आपके पास बहुत सारी प्रविष्टियों वाली 1 तालिका है
- आपके पास एक्सेल से यह सूची है जहां आप "खोज कॉलम" की खोज करते हैं
- एक मैच के मामले में, पूरे मान को "रिप्लेस कॉलम" से बदलें
अगर ऐसा है, तो यह समाधान हो सकता है:
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" में% जैसे वाइल्डकार्ड, शायद कई मैच - अभी एक "यादृच्छिक" लिया जाता है, प्रदर्शन सबसे अच्छा नहीं हो सकता है, ...) लेकिन मुझे लगता है अधिक सटीक उत्तर के लिए मुझे एक बेहतर प्रश्न की आवश्यकता होगी।
संपादित करें:
राल्फ के लिए धन्यवाद ... मैंने डुप्लिकेट मैचों को संभालने में सक्षम होने के लिए "बदलें" तालिका को प्राथमिकता दी।
यदि "आरबीसी" की प्राथमिकता 3 है तो परिणाम यह होगा:
1 की प्राथमिकता के साथ यह है: