【问题标题】:sql server regexsql server 正则表达式
【发布时间】:2012-11-06 12:35:33
【问题描述】:

在 SQL Server (2012) 中,我有一个包含数值的字段。该字段的类型为int。 假设数据库中的字段包含123456789。 我是这样搜索的:

select * from table1 where field1 like '[1-9]{0,2}3456789'

我也试过'^[1-9]{0,2}$3456789'

两者都不工作。我做错了什么?

【问题讨论】:

  • 整数不支持正则表达式,您仍然可以使用正则表达式在 SQL 中搜索文本

标签: sql sql-server regex sql-server-2012


【解决方案1】:

SQL Server 本身不支持正则表达式。您需要为此安装 CLR 程序集。

LIKE 模式语法不支持量词,因此在不使用 CLR 的情况下,唯一的选择是将其展开。

where field1 like '3456789' 
 or  field1 like '[1-9]3456789'  
 or  field1 like '[1-9][1-9]3456789' 

【讨论】:

  • 多次使用“or field1 like”会影响性能吗?
  • @Itay.B - 它将多次处理字符串,因此不会像 RegEx 那样高效。不过,安装 CLR 程序集非常简单。
  • @RoyiNamir - 不,但这与没有前导通配符和尾随通配符的 LIKE 相同,不是吗?
  • 如果我想使用 clr 程序集,我需要 dba 来批准它,这在我的公司并不是一件容易的事。
猜你喜欢
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多