ALTER function dbo.ufn_GetNumeric (
@oldstr varchar(100)
) returns INT
AS
/******************************
函数功能: 从字符串中取数字.
创建日期: 2007-10-19
******************************/
begin
declare @s varchar(1000),@i int
set @i = 1
while @i <= DATALENGTH(@oldstr)
BEGIN
IF substring(@oldstr collate Chinese_PRC_BIN,@i, 1) like('[0-9]') --取数字
SET @s=isnull(@s,'')+substring(@oldstr ,@i,1)
set @i = @i +1
END
RETURN CAST(@s AS INT)
end
GO
/**//*======================================================*/
alter function dbo.ufn_GetLowerChar(
@oldstr varchar(100)
) returns varchar(100)
AS
/**//******************************
函数功能: 从字符串中取小写字母.
创建日期: 2007-10-26
******************************/
begin
declare @s varchar(1000),@i int
set @i = 1
while @i <= DATALENGTH(@oldstr)
BEGIN
if substring(@oldstr collate Chinese_PRC_BIN,@i, 1) like('[a-z]') --取小写字母
set @s=isnull(@s,'')+substring(@oldstr ,@i,1)
set @i = @i +1
END
return @s
end
GO
/**//*======================================================*/
alter function dbo.ufn_GetUpperChar(
@oldstr varchar(100)
) returns varchar(100)
AS
/**//******************************
函数功能: 从字符串中取大写字母.
创建日期: 2007-10-26
******************************/
begin
declare @s varchar(1000),@i int
set @i = 1
while @i <= DATALENGTH(@oldstr)
BEGIN
if substring(@oldstr collate Chinese_PRC_BIN,@i, 1) like('[A-Z]') --取大写字母
set @s=isnull(@s,'')+substring(@oldstr ,@i,1)
set @i = @i +1
END
return @s
end
GO
/**//*======================================================*/
alter function dbo.ufn_GetChineseChar(
@oldstr varchar(100)
) returns varchar(100)
AS
/**//******************************
函数功能: 从字符串中取中文字符.
创建日期: 2007-10-26
******************************/
BEGIN
DECLARE @s VARCHAR(1000)
while patindex('%[吖-座]%',@oldstr)>0
begin
SELECT @s=ISNULL(@s,'')+SUBSTRING(@oldstr,PATINDEX('%[吖-座]%',@oldstr),1)
SET @oldstr=stuff(@oldstr,1,patindex('%[吖-座]%',@oldstr),'')
end
return @s
END
GO
/**//*测试*/
declare @s varchar(100)
set @s='CHINA,r~!@#$o%likjLKSkF^&*(y,&.;)(*wu^x%943中8国$@人ss'
select dbo.ufn_GetChineseChar(@s)[#1],@s [#2] UNION ALL
select dbo.ufn_GetUpperChar(@s)[#1],@s [#2] UNION ALL
select dbo.ufn_GetLowerChar(@s)[#1],@s [#2] UNION ALL
select dbo.ufn_GetNumeric(@s)[#1],@s [#2]
/**//*
#1 #2
中国人 CHINA,r~!@#$o%likjLKSkF^&*(y,&.;)(*wu^x%943中8国$@人ss
CHINALKSF CHINA,r~!@#$o%likjLKSkF^&*(y,&.;)(*wu^x%943中8国$@人ss
rolikjkywuxss CHINA,r~!@#$o%likjLKSkF^&*(y,&.;)(*wu^x%943中8国$@人ss
9438 CHINA,r~!@#$o%likjLKSkF^&*(y,&.;)(*wu^x%943中8国$@人ss
(4 行受影响)
*/