- 作者: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