sql 按字数截断英文字符串 但保留单词



前几天有一个英文网站,需要截取显示数据,用数据库交付。本来可以采集下来简短描述。
但是嫌麻烦 直接在sql里面自定义一个简短描述的函数,按照400字符截取,但不截断单词。
以下为实现代码。

alter function shortDesc(@longDe varchar(5000))
returns varchar(2000)
as
begin
declare @a varchar(1000)
declare @b varchar(1000)
declare @c varchar(5000)
select @a=substring(@longDe,0,400)
if(len(@longDe)>400)
begin
select @b=substring(@longDe,400,1)
if(@b=’ ‘)
begin
return @a+’…’
end
else
begin
select @c=substring(@longDe,400,len(@longDe))
declare @n int
select @n=charindex(‘ ‘,@c)
return substring(@longDe,0,400+@n)+’…’
end
end
return @a
end

以上的400可以再定义一个@变量进去 方便修改。我这里是临时使用就不考虑那么多了。另外使用的时候记得把alter修改为create 。我调试的时候修改了几次了