【问题标题】: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+'%'
  1. 问题是我只想从存储在@b的句子中获取特殊字符或确切关键字。
    示例:我想要 public&public 而不是 republic
  2. 我们无法更改 like 语句中的逻辑。
  3. 我们唯一能做的改变是变量@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 中的第一项时,会出现问题,因为您试图匹配之前不是字母的内容。使该匹配可选将导致您选择的匹配字母中的%。如果不更改选择,我认为没有办法解决这个问题。

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 2023-04-06
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多