完整截取字符串函数(sql)

很多地方都需要用到的截取字符串的函数。很多地方都是在后台代码里实现。这里这个是在数据库中实现的一个函数。

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


ALTER  FUNCTION [dbo].SubStr
 (@string varchar(500),                        --需要截取的字符
  @length int                                 --要显示的中文字符的个数,一个中文字符等于两个英文字符
  )®
RETURNS varchar(500)
AS
BEGIN
declare @str varchar(500)                    --保存返回字符串
declare @count int                               
declare @while int                               
declare @strlen int                                --传进字符串的长度
declare @char varchar(2)                     --保存临时的字符
--初始化变量
set @count=0
set @while=1
set @strlen=len(@string)
set @str=''

if(@strlen>@length)                    --判断字符串是否比要显示的长
begin
    while @count<(@length-2)*2   --循环截取字符串
    begin
        set @char=substring(@string,@while,1)
        set @while=@while+1
        if(len(@char)=0)    --判断是否结束
            break;
        if(unicode(@char)>128)  --如果unicode码比128大则认为是中文
        begin   
            set @count=@count+2
        end
        else
        begin
            set @count=@count+1
        end
        set @str=@str+@char
        if ((@length*2)-@count)=5   --当截取到最后一个字符时
        begin
            set @char=substring(@string,@while,1)
            if (unicode(@char)<128 or len(@char)=0)
               begin
                 set @str=@str+@char
                 set @while=@while+1
               end
            else
               begin
                set @str=@str+'.'
               end
                set @count=@count+1
        end
    end
if @count>=(@length-2)*2 and @count    set @str=@str+'....'
end
else

begin
 set @str=@string
end
--*/ 
RETURN @str
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

 Trackback: 转自( http://tb.blog.csdn.net/TrackBack.aspx?PostId=75561
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值