很多地方都需要用到的截取字符串的函数。很多地方都是在后台代码里实现。这里这个是在数据库中实现的一个函数。
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
数据库中实现字符串截取函数
博客介绍了在数据库中实现截取字符串的函数。该函数接收需截取的字符串和要显示的中文字符个数作为参数,通过循环和条件判断来截取字符串,若字符串过长会添加省略号,最后返回截取后的字符串。
2万+

被折叠的 条评论
为什么被折叠?



