`

在数据库中用正则表达式查询数据

阅读更多
  • Mysql5.0及以后直接支持.

select * from customer where email regexp '@126.com';
详细信息参考
  • MS SQL2000及以后支持.

/* 本文来自Cory Koski。Cory写道:“我最近遇到一个问题,就是试图在数据库域中搜索一个正则表达式。还没有一个版本的SQLServer内部支持正则表达式,但我发现了一个将正则表达式的所有优点添加到你的T_SQL应用的方法。为了更容易的使用正则表达式,我们可以使用自定义函数(User Defined Function, UDF)来帮助我们并使工作简洁。”

在这个解决方案中,我们需要SQL Server 2000或更高。我们还需要确定机器中有VBScript.RegExp类库,这随大多数Windows 2000 servers中的Windows Scripting包配有。若你正在使用一个更早版本的Windows,你必须为你的操作系统下载最新版的Windows Scripting。
自定义函数
下面是我的自定义函数,可用来在源字符串中搜索一个正则模式表达式。*/
ALTER  FUNCTION dbo.find_regular_expression
 (
  @source varchar(5000),
  @regexp varchar(1000),
  @ignorecase bit = 0
 )
RETURNS bit
AS
 BEGIN
  DECLARE @hr integer
  DECLARE @objRegExp integer
  DECLARE @objMatches integer
  DECLARE @objMatch integer
  DECLARE @count integer
  DECLARE @results bit
  
  EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
  EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
  EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
  EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END 
  EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
  EXEC @hr = sp_OADestroy @objRegExp
  IF @hr <> 0 BEGIN
   SET @results = 0
   RETURN @results
  END
 RETURN @results
 END


ALTER  function dbo.regexReplace
(
@source varchar(5000),    --原字符串
@regexp varchar(1000),    --正則表換式
@replace varchar(1000),   --替換值
@globalReplace bit = 0,   --是否是全局替換
@ignoreCase bit = 0       --是否忽略大小寫
)
returnS varchar(1000) AS
begin
declare @hr integer
declare @objRegExp integer
declare @result varchar(5000)

exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end 
exec @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OADestroy @objRegExp
IF @hr <> 0 begin
return null
end

return @result
end


i.e.
select top 1 * from hc_info_email where dbo.find_regular_expression(hc_rep_email,'@sohu|yahoo.com',0) != 0;
分享到:
评论

相关推荐

    在MySQL中用正则表达式替换数据库中的内容的方法

    本文将详细介绍在MySQL中用正则表达式替换数据库中的内容的方法。 MySQL正则表达式替换的基本语法 ----------------------------- 在MySQL中,用正则表达式替换数据库中的内容主要通过使用REGEXP和REPLACE函数来...

    PHP中用正则表达式清除字符串的空白

    在清理字符串的过程中,我们可能会用到以下几个重要的正则表达式模式: 1. '\s':匹配任何空白字符,包括空格、制表符、换行符等。 2. '\s(?=\s)':匹配被空白字符跟随的空白字符,利用正则表达式的前瞻断言功能,...

    使用JavaScript正则表达式如何去掉双引号

    `replace`方法用于在字符串中用一些字符替换另一些字符,或者替换一个与正则表达式匹配的子串。使用正则表达式`varpattern=/["]+/g;`,其中的`g`标志表示全局匹配,即匹配字符串中的所有双引号,然后将匹配到的双...

    在Asp中用“正则表达式对象”来校验数据的合法性

    因此我们在将这些信息保存到网站的数据库之前,要对这些用户所输入的信息进行数据的合法性校验,以便后面的程序可以安全顺利的执行。所以我们一般会在后端编写一个ASP的校验程序来分析用户输入的数据是否是合法的。 ...

    C#爬取古诗文网古诗.rar

    这里的关键技术包括WebClient类的使用、正则表达式的应用以及数据的数据库存储。下面将详细阐述这些知识点。 首先,`WebClient`是.NET Framework中用于下载文件和网页的类,它提供了异步和同步的HTTP请求方法。在这...

    delphi中用“#”替换“''”字符替换的例子

    - `tempQuery`:假设这里已经有一个预先定义好的`TADOQuery`对象,它连接到了数据库并执行了一个查询。 - `Result`:用于存储从`tempQuery`中获取的数据。 2. **字符串替换**: - 循环遍历字符串中的每个字符。 ...

    所有很常见的程序代码,希望对初级程序员来说是一中锻炼和学习吧

    这些文件名揭示了多个编程和开发相关的知识点,涵盖了前端设计、正则表达式、数据库操作、用户界面交互、时间处理以及代码优化等多个方面。以下是详细解释: 1. **Dreamweaver常用技巧.txt**:Dreamweaver是Adobe的...

    Python3实现的爬虫爬取数据并存入mysql数据库操作示例

    总结来说,这个示例展示了如何使用Python3结合正则表达式和MySQL数据库进行网络爬虫开发,实现从网页抓取数据并存储到数据库的过程。这对于数据分析、信息监控以及自动化任务等领域非常有用。不过,进行网络爬虫时,...

    数据库原理与应用课程设计题目.pdf

    应用部分则指向了数据库在实际项目中的使用,涉及数据模型设计、查询优化、事务管理等方面。 在文档内容中,可以识别出如下知识点: 1. **Microsoft SQL Server 2005**: 这是微软公司发布的一款关系型数据库管理...

    PHP初级入门教程(比较齐全)

    正则表达式.pdf** - 正则表达式是用于文本模式匹配的强大工具,在PHP中用于数据验证、搜索和替换等场景。这份资料将深入讲解正则表达式的语法和用法。 10. **6.数组.pdf** - 数组是存储多个值的数据结构,PHP提供了...

    采集类(使用)

    6. **Regex(正则表达式)**:正则表达式是数据匹配和提取的强大工具,可以用来从文本中精确地抽取特定格式的信息。 在实际的采集类设计中,通常会包含以下功能: - **初始化配置**:设置URL、请求头、超时时间等...

    基于Python的新浪微博位置数据获取方法研究.zip

    4. **正则表达式匹配**:如果位置信息不在结构化的HTML标签内,可能需要通过正则表达式来匹配。`re`库提供了一种强大的方式来查找和提取字符串中的模式,如城市名、经度和纬度等。 5. **处理JSON数据**:微博API...

    如何在LoadRunner 脚本中做关联

    2. **选择关联类型**:LoadRunner支持多种关联类型,如正则表达式关联、数据库关联、XML关联等。选择最合适的关联类型取决于动态数据的格式。 3. **创建关联**: - 在Action函数中,找到包含动态数据的步骤,右键...

    php实现爬取和分析知乎用户数据

    正则表达式对数据的解析在爬虫开发中是不可或缺的一个步骤。 3. 数据入库和程序部署: 获取到数据之后,需要将数据存储到数据库中,以便进一步分析或后期使用。在存储数据之前,需要建立好数据库结构,根据需求设计...

    精品--河北地质大学 毕业设计 51job 前途无忧 招聘网站 爬虫 数据清洗 数据分析 及数据可视化.zip

    此外,正则表达式也是数据清洗中的利器,能有效地进行字符串匹配和替换。 然后,数据分析是理解数据的关键。这可能涉及到统计学知识,如描述性统计、假设检验、回归分析等。Python的NumPy库提供了强大的数值计算...

    Python_Web_Scraping_Cookbook pdf and code

    4. **正则表达式**:在处理网页文本时,正则表达式(regex)常用于模式匹配和数据提取。熟练掌握正则表达式的使用能够提高数据清洗的效率。 5. **网络爬虫框架**:如`Scrapy`框架提供了强大的功能,包括中间件、...

    关于jsp的一系列错误整理

    正则表达式在JSP中用于数据验证,如输入格式检查。`&lt;jsp:include page="regex.jsp" flush="true"&gt;`可以引入包含正则表达式验证的页面。`java.util.regex.Pattern`和`Matcher`类是Java中处理正则的关键工具。 4. **...

Global site tag (gtag.js) - Google Analytics