我在SQL Server 2005中的@ProductDescription_Glossary
上执行模式匹配以替换完整的单词。
@GlossaryKeyword
变量包含要匹配和替换的单词。
以下代码替换@GlossaryKeyword
开头,结尾和末尾的@ProductDescription_Glossary
,但如果@ProductDescription_Glossary
在开头或结尾包含括号,则此代码无法成功处理替换单词
案例1:此案例工作正常 - Heather未被替换为带有Heatherd一词的工具提示链接
@GlossaryKeyword = Heather
@ProductDescription_Glossary = Heathered
案例2:这种情况失败 - 在这种情况下Heather被替换,我的要求是,石南花不会被替换,如案例1所以为我提供所需的模式。
@GlossaryKeyword = Heather
@ProductDescription_Glossary = (Heathered
提前致谢。
注意:@GlossaryKeyword
只有字母数字,连字符和/字符i,e(0-9,A-Z,a-z, - ,/)
@ProductDescription_Glossary
包含HTML标记,默认情况下处理(可能是由于我服务器上的排序规则设置)
代码:
if PATINDEX ('%[^a-z]' + @GlossaryKeyword + '[^a-z]%','.' + @ProductDescription_Glossary + '.') > 0
BEGIN
SET @ProductDescription_Glossary = REPLACE(@ProductDescription_Glossary,@GlossaryKeyword, '<a target="_blank" id="q_' + CAST (@GlossaryID AS VARCHAR(10)) + '" class="anchor_regular_Mehroon" href="javascript: void(0);">' + @GlossaryKeyword + '</a>')
SET @GlossaryToolTip = @GlossaryToolTip + '<div id="a_q_' + CAST (@GlossaryID AS VARCHAR(10)) + '" class="toolTip_glossary" style="display:none;">' + @GlossaryKeywordDescription + '</div>'
END
答案 0 :(得分:0)
就像()到
一样select PATINDEX('%[^a-z(]'+ 'Heather' + '[^a-z)]%', '(Heathered red, purple, royal and navy)')
它不是正则表达式。
你想要排除( - 不包括。