Oracle擷取中英文混合字串的處理

2021-04-07 08:13:01 字數 1655 閱讀 6617

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...