Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:包含括号并排除所有其他字符的模式_Sql Server_Regex_Tsql_Sql Server 2005_Pattern Matching - Fatal编程技术网

Sql server SQL Server:包含括号并排除所有其他字符的模式

Sql server SQL Server:包含括号并排除所有其他字符的模式,sql-server,regex,tsql,sql-server-2005,pattern-matching,Sql Server,Regex,Tsql,Sql Server 2005,Pattern Matching,我正在SQL Server 2005中的@ProductDescription\u Glossary上执行模式匹配,以替换完整的单词 @GlossaryKeyword变量包含要匹配和替换的单词 以下代码替换在@ProductDescription\u Glossary的开头、结尾和结尾处找到的@GlossaryKeyword,但如果@ProductDescription\u Glossary在单词的开头或结尾包含括号,则此代码无法成功处理替换操作 案例1:此案例工作正常-Heather未被替换为

我正在SQL Server 2005中的
@ProductDescription\u Glossary
上执行模式匹配,以替换完整的单词

@GlossaryKeyword
变量包含要匹配和替换的单词

以下代码替换在
@ProductDescription\u Glossary
的开头、结尾和结尾处找到的
@GlossaryKeyword
,但如果
@ProductDescription\u Glossary
在单词的开头或结尾包含括号,则此代码无法成功处理替换操作

案例1:此案例工作正常-Heather未被替换为带有单词Heatherd的工具提示链接

@GlossaryKeyword = Heather
@ProductDescription_Glossary = Heathered
案例2:这个案例失败-在这个案例中,Heather被替换,我的要求是,Heather不会被替换,就像案例1一样,所以请为我提供所需的图案

@GlossaryKeyword = Heather
@ProductDescription_Glossary = (Heathered
提前谢谢

注:
@GlossaryKeyword
只有字母数字、连字符和/字符i,e(0-9,A-Z,A-Z,-,/)

@ProductDescription\u Glossary
包含默认情况下处理的HTML标记(可能是由于我的服务器上的排序规则设置)

代码:

如果PATINDEX('%[^a-z]'+@GlossaryKeyword+'[^a-z]','.+@ProductDescription_Glossary+')>0
开始
设置@ProductDescription\u Glossary=REPLACE(@ProductDescription\u Glossary,@GlossaryKeyword,'')
设置@GlossaryToolTip=@GlossaryToolTip+'+@GlossaryKeywordDescription+''
结束
就像()到not一样

select PATINDEX('%[^a-z(]'+ 'Heather' + '[^a-z)]%', '(Heathered red, purple, royal and navy)')
而且它不是正则表达式。

您要排除(-not include.

首先,
PATINDEX()
不支持正则表达式-它只进行通配符匹配。第二:我添加了变量定义,执行了,它按预期工作。@marc_s,我希望在出现以下情况时不会替换它。设置ProductDescription\u Glossary=',poly(希瑟红、紫、皇家和海军);;SET-GlossaryKeyword='Heather'不这没有帮助。我想从模式匹配场景中排除括号。SET-ProductDescription_Glossary=',poly(希瑟红、紫、皇家和海军)“;SET-GlossaryKeyword='Heather'然后必须替换Heather为什么你否决了这个问题?你在阅读我之前的评论时是否感到困倦?然后在进入堆栈溢出之前好好睡一觉。查看我问题中的If条件,我必须用href标记替换ProductDescription_Glossary中的纯文本以显示tooltip当鼠标悬停在此文本上时,…(heather)将被替换为()@ShujaatKagathra接受现实。heather对heather没有改变。“不要被替换”不是英语。Patindex不是正则表达式。@balm 1.我不是将Heather改为Heather,我必须用锚定标记替换Heather,2.我喜欢说英语,但不如英语不是我的母语那么好,3.我的问题以“我正在……上执行模式匹配”开始将我的问题放在这里的原因是我对PatIndex了解不多。@balm请参见这些页面上的产品说明,
select PATINDEX('%[^a-z(]'+ 'Heather' + '[^a-z)]%', '(Heathered red, purple, royal and navy)')