RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
完整截取字符串函数(sql)
  • 作者:xiaoxiao
  • 发表时间:2020-12-23 10:34
  • 来源:未知

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

SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO

ALTER  FUNCTION [dbo].SubStr (@string varchar(500),                        --需要截取的字符  @length int                                 --要显示的中文字符的个数,一个中文字符等于两个英文字符  )®RETURNS varchar(500)ASBEGINdeclare @str varchar(500)                    --保存返回字符串declare @count int                               declare @while int                               declare @strlen int                                --传进字符串的长度declare @char varchar(2)                     --保存临时的字符--初始化变量set @count=0set @while=1set @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    endif @count>=(@length-2)*2 and @count     set @str=@str+'....' end else

begin set @str=@stringend--*/ RETURN @strEND

GOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO