SQL Server使用正则表达式

时间:2014-05-09 04:38:55

标签: sql sql-server try-catch public

我使用以下查询来搜索句子中的某些文字

declare @a nvarchar(100)
set @a=N'%[ /\\@\&\*()\-\+\|\>?,\":;/、・¥—&*(-》>?,;“”〉\- ][public]'

declare @b nvarchar(50)

set @b='public property'

select @b where @b like '%' +@a+'%'
  1. 问题是我只想从@b中存储的句子中获取特殊字符或确切关键字。
    示例:我希望public&public不是republic
  2. 我们无法改变声明中的逻辑。
  3. 我们唯一可以做的改变是变量@a

1 个答案:

答案 0 :(得分:0)

[public]匹配一个字符,它是eiter p,u,b,l,i或c。首先,您需要将其修复为public

至于之前的角色我认为排除你不想匹配的东西在这种情况下更容易。我建议:

declare @a nvarchar(100)
set @a=N'[^a-zA-Z]public'

declare @b nvarchar(50)

set @b=' public property'

select @b where @b like '%' +@a+'%'

相反,排除public之前的所有字母。但是当公共是您@b中的第一项时,会遇到问题,因为您要尝试匹配之前不是字母的内容。使该匹配成为可选项将导致您选择匹配字母中的%。我认为如果不改变选择就无法解决这个问题。