SQL中复杂的查找和替换
我有一个ProductName键/值对列表,如下所示:SQL中复杂的查找和替换,sql,sql-server,replace,Sql,Sql Server,Replace,我有一个ProductName键/值对列表,如下所示: CREATE TABLE [dbo].[ProductNames] ( [Key] [nvarchar](100) NULL, [Value] [nvarchar](100) NULL ) 包含如下值: 'Pepsi', 'Pepsi®' 'Coke', 'Coke®' 我需要查找并替换文本字段中尚未包含产品注册商标的值…并将其替换为完整的商标字符串 例如: 1. if 'Pepsi' is alone....it b
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
更新:
注册商标只是需要替换的一个例子。也可能有其他多字符替换。因此,可能需要更复杂的东西。例如,我可能会检测“Pepsi”,然后从键/值行的值部分截断“Pepsi”…然后…尝试检测字符串中是否已经存在截断的值。如果没有,请继续替换该值(类似于此)。也许此解决方案会对您有所帮助。它将更新
值
未以®
结尾的记录,并将其追加到末尾
update ProductNames
set Value = Value + '®'
where Value not like '%®'
我想不出一个简单的方法来解决这个问题。迭代每个特殊关键字,并检查这些单词的开头、中间和结尾,假设您需要空格来分隔每个关键字。根据业务逻辑,将操作分解为几个步骤。是的,很贵,但我想这是一次性的。更好的是,在添加/修改行时运行此例程一次。谢谢您的回复。然而,注册商标只是源表中的一个示例。
update ProductNames set
Value = CASE WHEN CHARINDEX('®',value,1) = 0 then value+'®' else value end