SqlServer 获取字符串中数字,中文及字符部分数据

--获取英文字符数据


Create function [dbo].[Fun_GetChar]
(
@No varchar(100)
)
RETURNS varchar(100)
AS
BEGIN
WHILE PATINDEX('%[^A-Za-z]%',@No)>0
BEGIN
SET @No=STUFF(@No,PATINDEX('%[^A-Za-z]%',@No),1,'') 
END
RETURN CONVERT(varchar(100),@No)
END

--select dbo.F_GetChar('2.5mg')--调用函数=mg
 

--获取数值数据

Create FUNCTION [dbo].[Fun_GetNum] 
( @Str NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
    BEGIN
        DECLARE @Start INT;
        DECLARE @End INT; 
        DECLARE @Part NVARCHAR(MAX)
        SET @Start = PATINDEX('%[.,0-9]%', @Str);
        SET @End = PATINDEX('%[.,0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start));
        SET @Part = SUBSTRING(@Str,@Start,1) 
        WHILE  @End >0 
        BEGIN 
                SET @Start = @start+@End
                SET @Part = @Part+SUBSTRING(@Str,@Start,1)       
                SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start)); 
        END
            
        RETURN  @Part;
    END;

--seleect dbo.[Fun_GetNumPart]('2.5mg')--调用函数=2.5

--获取中文数据

create function [dbo].[Fun_getCN]
(@str varchar(4000)) 
returns varchar(4000) 
as 
begin 
declare @word nchar(1),@CN varchar(4000) 
set @CN='' 
while len(@str)>0 
begin 
set @word=left(@str,1) 
if unicode(@word) between 19968 and 40869 
set @CN=@CN+@word 
set @str=right(@str,len(@str)-1) 
end 
return @CN 
end 
GO 

--select dbo.[Fun_getCN('2.5mg,毫克')--调用函数=毫克

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值