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

[list]
[*]Mysql5.0及以后直接支持.
[/list]
select * from customer where email regexp '@126.com';
[url=http://dev.mysql.com/doc/refman/5.1/en/regexp.html]详细信息参考[/url]
[list]
[*]MS SQL2000及以后支持.
[/list]
/* 本文来自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 专业笔记 -- 第 23 章:正则表达式 正则表达式(REGEXP/RLIKE)用于在SQL中基于模式匹配数据。通过^、$界定开头或结尾,[ ]匹配字符集合,|实现“或”逻辑,可灵活筛选字段。例如,REGEXP '^N'匹配以N开头的姓名,REGEXP '4569$'匹配以4569结尾的电话号码。结合NOT REGEXP与AND条件,可实现复杂查询。结果返回1(匹配)或0(不匹配),配合IF和GROUP BY可统计匹配情况,提升数据检索效率。 阅读详情

相关推荐

数据库使用正则表达式

SQL使用正则表达式

数据库查询操作(使用正则表达式

1.正则表达式通常用来检索或者是替换那些符合某个模式的文本的内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串。2.使用正则表达式进行基本的查询(1)查询一特定的字符或者是字符串开头的记录语法:字符‘^’匹配以特定的字符或者是字符串开头的文本;select * from  test where name regexp '^s';(2)查询以特定的字符或者是字符串结尾的记录语法:字符‘$’匹配以...

雪花飘满地 1万+

CAD+ËÃÊÑË·½Á¿×Öɼ

CAD+ËÃÊÑË·½Á¿×Öɼ

使用MySQL正则表达式 __MySQL必知必会

正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。 MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。 MySQL仅支持多数正则表达式实现的一个很小的子集。 ---------------------- 9.2.1 基本字符匹配 REGEXP后所跟的东西作为正则表达式处理。 代码 SELECT ...

weixin_30484247的博客 1068

如何在Sql Server 中使用正则表达式

<br />如果能在Sql Server中使用正则表达式,一定会对程序编写有很大帮助,那么如何实现呢?<br />其实Sql Server本身并不提供这样的功能,但我们如果能够通过Sql Server 调用VBScript,那么问题就有解决的可能,这中间我们要先详细了解三个系统级别的存数过程:sp_OACreate , sp_OASetProperty 和 sp_OAMethod<br />sp_OACreate<br />翻阅一下帮助文件不难知道,该存储过程可以帮我们生成一个OLE对象的实例。也就是我们可

学习笔记 3937

sql server使用正则表达式

目标 为数据库创建一个正则表达式函数,供查询使用 不建议使用函数,能查询到内存里面用代码解决的就用代码解决!!! 这里的方法仅供参考 操作 1.新建sql server项目 2.定义正则表达式的方法 public class SqlFunction { /// 是否匹配正则表达式 /// </summary> /// <param name="input...

weixin_30681615的博客 1651

大四开始写BLOG第二天

       不晓得我应该写些什么,觉得自己好象有很多东西都不是很懂,也有很多东西都没有接触过!面对未来有点迷茫,可我知道人只要来到这个世界上就需要面对很多的事情,即使不是自己愿意看到的!      为了自己的成长,也为了见证自己的成长,我会天天来学点东西,看点东西!也来写点东西!       呵呵

gogo_scan成长日志 694

第一篇CSDN博客

我这个人不知道怎么hui'shi

foodlover8的专栏 158

工程启动没有报错,但是dubbo后台显示没有提供者,工程没有提供服务

先说一下我遇到的问题:服务工程启动没有异常,消费者工程启动会出现很多nested(嵌套的)错误,但其根本错误是No provider available(缺少服务提供者)。可是服务工程起来的时候明明没有报错啊,网上找了好久,有些人遇到这个问题是因为使用了云服务器内网没配好之类的网络问题;有些人是服务工程太大了zookeeper来不及和它配合,只要增加zk配置的什么时间就好了,我也配了,本...

ZZH2294148034的博客 1740

清华人

看看清华人是如何学习与生活,再看看自己是如何度过一天的,本来聪明的人就很厉害,而既聪明又努力的人简直无敌了,还在堕落和迷茫的同学,赶快醒醒吧! 一、永远不要说你已经尽力了   我在高中时体育特别差,跑 1000 米都很要命,从来都是不及格。到了清华之后,第一节体育课,老师告诉我们每年要测 3000 米长跑,跑不过不许毕业,取消推研资格。   怎么办?于是每天晚上 10:30,我们

张肖的博客 756

SQL学习(一)正则表达式

名称解释        正则表达式(Regular Expression Support)通常是被用来检索或替换那些符合某个模式的文本内容一个公式。许多程序设计语言都支持利用正则表达式进行字符串操作,是一个处理文本非常有用的工具。oracle10g以前,我们在处理文本字符的时候,往往需要通过like和substr、instr、replace组合实现,比较麻烦,而oracle10g开始,可以通过

DBA实施者 1014

js中使用的正则表达式

在前端做表单校验,正则表达式是最高效的手段。比如判断手机号格式、身份证、邮箱、金额、用户名密码、中文输入等场景。下面整理一套业务开发中经常复用的正则,每一条附带注释说明。

qq_63084249的博客 212

正则表达式完全指南(基础语法 + 实战应用 + 性能优化 + 最佳实践)

正则表达式(Regular Expression,简称 Regex 或 RegExp)是一种用于匹配字符串中字符组合的模式。表单验证(邮箱、手机号、密码等)字符串搜索和替换数据提取和解析文本处理正则表达式是前端开发中非常强大的工具,掌握它能大大提高你的开发效率。理解基本语法:字符类、量词、边界、分组掌握常用场景:表单验证、数据提取、字符串替换注意性能问题:避免灾难性回溯,预编译正则善用工具:使用在线测试工具验证正则表达式适度使用:简单场景优先使用字符串方法。

2301_78939167的博客 299

Python高级与正则表达式

本文系统介绍了Python中的迭代器与生成器,阐述了二者在实现方式、代码复杂度及内存使用上的差异,并通过实例展示了如何自定义迭代器和生成器。同时,文章讲解了property属性的两种定义方式及其在封装私有属性中的应用,最后深入剖析了正则表达式的语法与常用操作函数(如match、search、findall、sub),并通过多个案例演示了其在字符串匹配与提取中的实际应用。

ctlover的博客 159

正则表达式调试与数据校验实战,告别手写正则反复试错

正则表达式调试效率低、试错成本高,常因语法错误、贪婪匹配、环境不一致导致线上校验失效。本文分享使用jsontop.cn在线正则工具的高效实践:实时高亮匹配、语法兼容主流语言、内置常用模板、纯前端无数据上传,实现表单校验、日志清洗、参数过滤等场景的标准化调试流程,显著提升开发效率与代码质量。

2608_96729545的博客 65

Linux命令——正则表达式

简单地说,正则表达式是一种用于识别文本模式的符号表示法,在某种程度上类似于匹配文件和路径名的Shell通配符,但用途更广。许多命令行工具和大多数编程语言支持正则表达式,以便于解决文本操作方面的问题。然而,事情没那么简单,正则表达式并非全都相同;不同的工具,不同的编程语言,其正则表达式实现都略有差异。在本书中,我们将正则表达式限定在POSIX标准范围内(该标准范围涵盖了大多数命令行工具)​,相较于许多编程语言(典型的是Perl)​,POSIX使用的符号写法要略微丰富一些。

吴声子夜歌的博客 266

通信领域基于CUDA的并行计算优化技术在核心网DPI流量识别与编解码加速中的应用实践

内容概要:本文探讨了CUDA并行计算优化技巧在通信行业核心网中的应用,聚焦于DPI流量识别与编解码加速实践。文章系统阐述了数据包级并行处理、GPUDirect RDMA、零拷贝内存、原子操作优化、warp级聚合等关键技术,并通过五元组哈希流量统计算法的GPU实现案例,展示了如何利用CUDA大幅提升处理效率。代码层面突出哈希函数的SIMT友好设计、无锁并发哈希表构建、内存访问优化与工程化权衡,实现了单batch处理时延从80微秒降至5微秒以内,吞吐达200Gbps以上,显著优于传统CPU方案。最后展望了算网融合、AI原生网络与绿色低碳三大发展趋势。; 适合人群:具备CUDA编程基础、熟悉网络协议栈与高性能数据面开发的通信领域研发人员,尤其是从事核心网、用户面功能(如UPF)、DPI系统优化的工程师;也适用于关注GPU加速在通信信号处理中应用的技术人员。; 使用场景及目标:①提升核心网用户面流量处理性能,实现高吞吐低时延的DPI与流统计;②优化LDPC/Polar译码、TLS批量协商等计算密集型任务;③降低单位比特处理功耗,满足运营商“双碳”目标下的能效要求;④探索AI与传统通信处理融合的统一算力架构。; 阅读建议:学习时应重点关注哈希设计避免warp divergence、原子操作的合理使用、内存预分配与批处理策略,并结合实际网络流量特性进行实验调优;建议在支持GPUDirect RDMA的硬件平台上复现案例,深入理解GPU与智能网卡协同工作的全链路优化潜力。

指针数组 数组指针 二级指针

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 在C语言编程环境中,指针是一项极为关键的基础元素,它赋予程序直接接触并干预内存位置的能力。本文将细致研究三种核心指针类型:指针数组、数组指针以及二级指针。 我们首先需要掌握指针的基础知识。所谓指针,即变量的内存位置标记,当我们声明一个指针变量,比如`int *p`,实际上是在构建一个能够容纳整型变量地址的标记。借助`&`运算符,我们可以获取变量的内存位置,并将其分配给指针,例如`p = &i`。不仅如此,指针还能用于数组元素的访问,例如`a[i]`与`*(a + i)`效果相同,因为数组名称在C语言中被视作指向数组首元素的指针。 数组指针属于一种特殊的指针变量,其指向的是某个一维数组的首地址。以一个整型数组`int a[5]`为例,`int (*p)[5]`即表示一个数组指针,它能保存数组`a`的地址。当对数组指针执行解引用操作`*p`时,结果将是整个数组,而非数组的第一个元素。由此可见,`*p`与`a`等价,它们都指向数组的起始点。 指针数组则是一种数组,其构成元素均为指针。例如,`int *p[5]`定义了一个由五个整型指针构成的数组。此类变量能够储存多个地址,每个地址都可以关联到一个整型变量。借助下标操作,例如`p[i]`,我们可以访问并处理这些指针所指向的变量。 二级指针,亦称为多级指针,是一种指向指针的指针。比如,`int **pp`即是一个二级指针,它能储存一个指向`int *`类型变量的地址。二级指针常用于处理多维数组,尤其是二维数组。在二维数组中,第一层索引通常对应行,第二层索引对应列。假设有一个`int arr[3][4]`的二维数组,一个二级指针`int ...

上一篇: AjaxAnyWhere+Struts的一个应用(demo/feature crew)
下一篇: Flash视频 Step by Step
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值