declare @i int
set @i =30
while @i>0
begin
update 表
set 標題=left(標題,@i)
where datalength(left(標題,@i))<=30
and datalength(標題)>30
set @i=@i-1
end
減少迴圈
declare @i int
set @i =30
while @i>0 and exists (select 1 from 表 where datalength(標題)>30)
begin
update 表
set 標題=left(標題,@i)
where datalength(left(標題,@i))<=30
and datalength(標題)>30
set @i=@i-1
end一樣,導到臨時表,更新好了再顯示;注意效率問題,畢竟用函式判斷效率不會好
if object_id('testfunc') is not null drop function testfunc
gocreate function testfunc(@title varchar(200), @len int) returns varchar(200)
asbegin
declare @s varchar(200)
set @s = @title
if datalength(@title) > @len
begin
declare @i int, @n int
set @i = 0
set @n = @len
while @i < @len - 1
begin
if ascii(@s) > 127
begin
set @i = @i + 1
set @n = @n - 1
endset @i = @i + 1
set @s = right(@s, len(@s) - 1)
endif @i = @len or ascii(@s) < 128
set @s = left(@title, @n)
else
set @s = left(@title, @n - 1)
endreturn(@s)
endgo
select 1 as id, dbo.testfunc('12345678', 5) as title
union select 2, dbo.testfunc('1234五六', 5)
union select 3, dbo.testfunc('1二三四五六', 5)
union select 4, dbo.testfunc('一二3四五六', 5)
union select 5, dbo.testfunc('一二三四五六', 5)
union select 6, dbo.testfunc('一', 5)
/*id title
-------------
112345
21234
31二三
4一二3
5一二6一
*/drop function testfunc
Django 擷取中英文混合字串
在列表顯示的時候,我們常常要擷取文章標題的長度,python擷取字串,本來很簡單的,但是中文和英文的寬度不一樣,在頁面看起來長度就差很遠了 length7 這是中文長度七 粗略來算 是粗略哦 一箇中文字元的寬度大概等於兩個英文字元的寬度。一箇中文字元的utf8編碼長度為3,gbk為2 所以將使用gb...
lua如何擷取中英文混合字串
lua在utf8下一個中文字長度為3,這樣在中英文混排時擷取字串就比較麻煩,下面的函式是中文字長度為1下的處理 獲取utf8編碼字串長度,中文長度為1 function utfstrlen str local len str local left len local cnt 0 local arr ...
C 中英文混合字串擷取函式
一 截斷字串 最大長度 原字串 public static string cutstr int maxlength,string str for int i temp.length i 0 i return 二private string getbytestring string center,in...
C 擷取中英文混合字串分行顯示
privateintgetstrbytelength stringstr privatestringsubstrlenth stringstr,intstartindex,intlength intj 0 記錄遍歷的位元組數 intl 0 記錄每次擷取開始,遍歷到開始的位元組位,才開始記位元組數 i...
字串處理 中英文擷取
判斷一個字元是ascill字元還是其它字元 如漢,日,韓文字元 param char c,需要判斷的字元 return boolean,返回true,ascill字元 public static boolean isletter char c 得到一個字串的長度,顯示的長度,一個漢字或日韓文長度為2...