日期:2014-05-18  浏览次数:20391 次

sql 正则表达式
sql 查询的时候,将 “-”、“_" 、 ”.“ 、“ ”(空) 过滤掉,用正则表达式 

select 正则表达式(栏位) from tablename 

大家帮我看看,不了解正则。

不要 replace 的,因为还有其他的处理,用replace 就逾时。

------解决方案--------------------
用stuff
SQL code
STUFF
删除指定长度的字符并在指定的起始点插入另一组字符。

语法
STUFF ( character_expression , start , length , character_expression ) 

参数
character_expression

由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。

start

是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。

length

是一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。

返回类型
如果 character_expression 是一个支持的字符数据类型,则返回字符数据。如果 character_expression 是一个支持的 binary 数据类型,则返回二进制数据。

注释
可以嵌套字符串函数。

------解决方案--------------------
SQL code
看这个例子:
SELECT STUFF('a---bcdef', 2, 3, '')
--结果
abcdef
GO

------解决方案--------------------
SQL code

--模仿一下剪剪哥的 出自:  http://blog.csdn.net/jinjazz/archive/2008/12/26/3613974.aspx

declare @inStr varchar(800)

set @inStr='2888123_23-.- 123'

--测试语句

declare @str  varchar(800)

set @str='var data = "'+@inStr+'";var reCat = /[^1234567890]/gi;data.replace(reCat,"");'
print @str
declare @object int 

declare @r varchar(800)

exec sp_OACreate 'MSScriptControl.ScriptControl',@object output   

exec sp_OASetProperty @object, 'Language','javascript' 

exec sp_OAMethod @object, 'eval', @r out,@str 

select @r