自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.
来源:互联网 发布:流行的网络用语 编辑:程序博客网 时间:2024/05/16 23:57
文章摘自http://www.rzchina.net/forum/71
http://topic.csdn.net/u/20080605/11/55c273aa-2206-4ded-b6f6-508a7a755c6a.html
范例
用户提交: 枪as23!@#%$支
数据库 将过滤 枪(.*)支 这个词语
有多个过滤字符!!!!
请问存储过程如何写????
又或者用其他办法怎么做????
- - ¦
查看复制到剪切板打印
- create function F_Str(@Name nvarchar(100))
- returns nvarchar(100)
- as
- begin
- while patindex('%[枪(.*)]%',@Name)>0
- set @name=stuff(@Name,patindex('%[枪(.*)]%',@Name),1,'')
- return @name
- end
- go
- select dbo.F_Str('枪as23!@#%$支')
create function F_Str(@Name nvarchar(100))
returns nvarchar(100)
as
begin
while patindex('%[枪(.*)]%',@Name)>0
set @name=stuff(@Name,patindex('%[枪(.*)]%',@Name),1,'')
return @name
end
go
select dbo.F_Str('枪as23!@#%$支')
方法2
查看复制到剪切板打印
- -- 自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.
- CREATE FUNCTION dbo.find_regular_expression
- (
- @source varchar(5000), --需要匹配的源字符串
- @regexp varchar(1000), --正则表达式
- @ignorecase bit = 0 --是否区分大小写,默认为false
- )
- RETURNS bit --返回结果0-false,1-true
- AS
- BEGIN
- --0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
- DECLARE @hr integer
- --用于保存返回的对象令牌,以便之后对该对象进行操作
- DECLARE @objRegExp integer DECLARE @objMatches integer
- --保存结果
- DECLARE @results bit
- /*
- 创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,并确定机器中有VBScript.RegExp类库
- */
- EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
- IF @hr <> 0 BEGIN
- SET @results = 0
- RETURN @results
- END
- /*
- 以下三个分别是设置新建对象的三个属性。下面是'VBScript.RegExp'中常用的属性举例:
- Dim regEx,Match,Matches '建立变量。
- Set regEx = New RegExp '建立一般表达式。
- regEx.Pattern= patrn '设置模式。
- regEx.IgnoreCase = True '设置是否区分大小写。
- regEx.Global=True '设置全局可用性。
- set Matches=regEx.Execute(string) '重复匹配集合
- RegExpTest = regEx.Execute(strng) '执行搜索。
- for each match in matches '重复匹配集合
- RetStr=RetStr &"Match found at position "
- RetStr=RetStr&Match.FirstIndex&".Match Value is '"
- RetStr=RetStr&Match.Value&"'."&vbCRLF Next
- RegExpTest=RetStr
- */
- 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
- --释放已创建的 OLE 对象
- EXEC @hr = sp_OADestroy @objRegExp
- IF @hr <> 0 BEGIN
- SET @results = 0
- RETURN @results
- END
- RETURN @results
- END
- 下面是一个简单的测试sql语句,可以直接在查询分析器中运行。
- DECLARE @intLength AS INTEGER
- DECLARE @vchRegularExpression AS VARCHAR(50)
- DECLARE @vchSourceString as VARCHAR(50)
- DECLARE @vchSourceString2 as VARCHAR(50)
- DECLARE @bitHasNoSpecialCharacters as BIT
- -- 初始化变量
- SET @vchSourceString = 'Test one This is a test!!'
- SET @vchSourceString2 = 'Test two This is a test'
- -- 我们的正则表达式应该类似于
- -- [a-zA-Z ]{}
- -- 如: [a-zA-Z ]{10} ... 一个十字符的字符串
- -- 获得字符串长度
- SET @intLength = LEN(@vchSourceString)
- -- 设置完整的正则表达式
- SET @vchRegularExpression = '[a-zA-Z ]{' + CAST(@intLength as varchar) + '}'
- -- 是否有任何特殊字符
- SET @bitHasNoSpecialCharacters = dbo.find_regular_expression(@vchSourceString, @vchRegularExpression,0)
- PRINT @vchSourceString
- IF @bitHasNoSpecialCharacters = 1 BEGIN
- PRINT 'No special characters.'
- END ELSE BEGIN
- PRINT 'Special characters found.'
- END
- PRINT '**************'
- -- 获得字符串长度
- SET @intLength = LEN(@vchSourceString2)
- -- 设置完整的正则表达式
- SET @vchRegularExpression = '[a-zA-Z ]{' + CAST(@intLength as varchar) + '}'
- -- 是否有任何特殊字符
- SET @bitHasNoSpecialCharacters = dbo.find_regular_expression(@vchSourceString2, @vchRegularExpression,0)
- PRINT @vchSourceString2
- IF @bitHasNoSpecialCharacters = 1 BEGIN
- PRINT 'No special characters.'
- END ELSE BEGIN
- PRINT 'Special characters found.'
- END
- GO
- 自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.
- 通过正则表达式 判断给定的字符串是不是符合要求
- 判断字符串是否为数字函数,正则表达式【C#】
- 实现使用正则表达式来判断指定的字符串是否是合法的E-mail地址
- 用javascript 函数判断输入的邮箱是否符合要求
- 反向生成符合正则表达式的字符串
- 正则表达式判断是否符合USD格
- 一个很有用的自定义函数(判断自然数是否包含2的指定次幂)
- oracle的常用函数 instr() 和substr()函数 博客分类: oracle 在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。 在一个
- 正则表达式-3(获取符合规则的子串)
- 自定义函数 判断oracle指定字段的值是否是数值类型
- 通过函数名的字符串来调用这个函数
- 正则表达式判断输入的字符串是否是数字
- java 判断字符串是否为中文的正则表达式
- 一个判断字符串是否是数字的正则表达式
- 判断字符串是否包含中文的正则表达式
- 用正则表达式来判断是否有需要的字符串
- Delphi函数 处理字符串《确保字符串分号;的位置和数量符合规则》--笔记
- linux下启动oracle
- 查询EBS接口表
- code 128编码中的特殊字符
- 支票:现金支票转帐支票使用方法大全
- 地理常识
- 自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.
- 学习调用搜索引擎
- Hibernate中cascade与inverse属性详解(二)-Matrix
- Linux人才需求与Windows持平 职位“粥多僧少”
- XP下安装IIS6.0的办法
- Visual C++开发工具与调试技巧整理
- Log4j配置大全
- 实模式与保护模式
- 如何等待所有的子进程结束?