【问题标题】:SQL Server using regular expressionSQL Server 使用正则表达式
【发布时间】:2014-05-09 04:38:55
【问题描述】:
我正在使用下面的查询来搜索句子中的一些文本
declare @a nvarchar(100)
set @a=N'%[ /\\@\&\*()\-\+\|\>?,\":;/、・¥—&*(-》>?,;“”〉\- ][public]'
declare @b nvarchar(50)
set @b='public property'
select @b where @b like '%' +@a+'%'
- 问题是我只想从存储在
@b的句子中获取特殊字符或确切关键字。
示例:我想要 public 或 &public 而不是 republic
- 我们无法更改 like 语句中的逻辑。
- 我们唯一能做的改变是变量
@a
【问题讨论】:
标签:
sql
sql-server
try-catch
public
【解决方案1】:
[public] 匹配一个字符,即 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 之前的所有字母。但是,当 public 是 @b 中的第一项时,会出现问题,因为您试图匹配之前不是字母的内容。使该匹配可选将导致您选择的匹配字母中的%。如果不更改选择,我认为没有办法解决这个问题。