2012-08-02 51 views
0

更換我有產品名稱鍵/值對的列表,像這樣:複雜的查找和SQL

CREATE TABLE [dbo].[ProductNames] 
(
    [Key] [nvarchar](100) NULL, 
    [Value] [nvarchar](100) NULL 
) 

包含的值是這樣的:

'Pepsi', 'Pepsi®' 
'Coke', 'Coke®' 

我需要找到和替換值一個文本字段不能包含產品的註冊商標...並將其替換爲完整的商標字符串。

例如:

1. if 'Pepsi' is alone....it becomes 'Pepsi®' 
2. if 'Pepsi®' already exists...do nothing 

UPDATE: 註冊商標是唯一一個被替換的東西例子。也可以有其他的多字符替換。因此,可能需要更復雜的東西。例如,我可能會檢測'Pepsi',然後從鍵/值行的VALUE部分截斷'Pepsi'...並且然後...嘗試檢測字符串中是否存在截斷的值。如果沒有,然後繼續並替換值(類似的東西)。

回答

2

也許這種解決方案將幫助你。它將更新value不以®結尾的記錄,並將其附加在末尾。

update ProductNames 
set Value = Value + '®' 
where Value not like '%®' 
+0

謝謝你的回覆。但是,註冊商標僅僅是源表中內容的一個例子。 – 2012-08-02 15:07:09

0
update ProductNames set 
    Value = CASE WHEN CHARINDEX('®',value,1) = 0 then value+'®' else value end 
0

我想不出一個簡單的方法這個工作。迭代每個特殊關鍵字並檢查這些單詞的開始,中間和結束情況,假設您需要空白區域來分隔每個關鍵字。根據業務邏輯的要求,將操作分成幾個步驟。昂貴的是,但我認爲這是一次性的事情。更好的是,當一行被添加/修改時,運行這個例程一次。