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