34,590
社区成员
发帖
与我相关
我的任务
分享
-- Test Data: tb
If object_id('tb') is not null
Drop table tb
Go
Create table tb(f2 nvarchar(220),f3 nvarchar(20) )
Go
Insert into tb select '创建于1994年8月13日,总部坐落于长沙经济技术开发区。自公司成立以来,每年以50%以上的速度增长。2007年,全年实现营业收入91.4亿元,较上年同期增长75.52%;实现净利润19.06亿元,较上年同期增长157.12%。2008年1-9月,实现营业收入108.69亿元,较上年同期增长55.82%。联系电话:021-62626212 手机:13564728989 ','123456788901adadf'
go
create function f_findnum(@s nvarchar(220))
returns varchar(11)
as
begin
declare @i int
set @i = len(@s)
while (@i >0)
begin
if isnumeric(substring(@s,@i,11)) = 1 and len(substring(@s,@i,11)) = 11
return substring(@s,@i,11)
set @I = @I - 1
end
return 'NULL'
end
go
select dbo.f_findnum(f2),f2
from tb
drop function f_findnum
--Result:
/*
f2
----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
13564728989 创建于1994年8月13日,总部坐落于长沙经济技术开发区。自公司成立以来,每年以50%以上的速度增长。2007年,全年实现营业收入91.4亿元,较上年同期增长75.52%;实现净利润19.06亿元,较上年同期增长157.12%。2008年1-9月,实现营业收入108.69亿元,较上年同期增长55.82%。联系电话:021-62626212 手机:13564728989
(所影响的行数为 1 行)
*/
--End
--提取数字
IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
GO
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER('呵呵ABC123ABC')
GO
--123
-- Test Data: tb
If object_id('tb') is not null
Drop table tb
Go
Create table tb(f2 nvarchar(20),f3 nvarchar(20) )
Go
Insert into tb select 'adf23423423423swrsdf','123456788901adadf'
Insert into tb select 'adf234234423swrsdf','123456788901adadf'
Insert into tb select 'adf23423423423swrsdf','12345678adadf'
go
create function f_findnum(@s varchar(20))
returns varchar(11)
as
begin
declare @i int
set @i = len(@s)
while (@i >0)
begin
if isnumeric(substring(@s,@i,11)) = 1
return substring(@s,@i,11)
set @I = @I - 1
end
return 'NULL'
end
go
select f2,dbo.f_findnum(f2),f3,dbo.f_findnum(f3)
from tb
drop function f_findnum
--Result:
/*
f2 f3
-------------------- ----------- -------------------- -----------
adf23423423423swrsdf 23423423423 123456788901adadf 23456788901
adf234234423swrsdf NULL 123456788901adadf 23456788901
adf23423423423swrsdf 23423423423 12345678adadf NULL
(所影响的行数为 3 行)
*/
--End