2012-08-02 71 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

我想不出一个简单的方法这个工作。迭代每个特殊关键字并检查这些单词的开始,中间和结束情况,假设您需要空白区域来分隔每个关键字。根据业务逻辑的要求,将操作分成几个步骤。昂贵的是,但我认为这是一次性的事情。更好的是,当一行被添加/修改时,运行这个例程一次。