sybase截断半个汉字

由于导入或者字符集甚至其他原因,导致表中某些字段的值有半个汉字的情况出现。需要处理,所以写如下过程实现(具体的分析网文有,可以很方便的google到)。

处理原理:就是按照一个字符串的char_length来分别截取每个字符,然后转换为varbinary,看第一个字节和第二个字节的取值,如果第一个字节的取值小于127,说明是字母或者数字,如果大于127,则看第二个字节,如果等于0则说明是半个字符。

demo说明:我这个过程只是处理最后一个字符,因为我需要处理的情况就是末尾有半个汉字,如果是中间也有,就按照上述处理原理逐个处理,发现是半个的,就舍弃,然后拼装起来即可。

[@more@]-----截取半个汉字
if exists (select * from sysobjects where id = object_id('dbo.up_truncsemihanzi'))
drop procedure dbo.up_truncsemihanzi
go
create procedure up_truncsemihanzi
@i_str varchar(800), ------传入字符串
@o_str varchar(800) output ------传出字符串
as
declare @strlen int, ---字符串长度
@lastchar char(1), ----最后一个字符
@tempint1 int, ---最后一个字符的第一个字节的值
@tempint2 int ---最后一个字符的第二个字节的值

begin
select @strlen=char_length(@i_str)

select @o_str =substring(@i_str,1,@strlen-1),
@lastchar=substring(@i_str,@strlen,1)

select @tempint1=convert(int,substring(convert(varbinary,@lastchar),1,1)),
@tempint2=convert(int,substring(convert(varbinary,@lastchar),2,1))


if @tempint1>127
begin
if @tempint2>0
select @o_str=@i_str

end
else
select @o_str=@i_str

end ----up_truncsemihanzi
go

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/47869/viewspace-909670/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/47869/viewspace-909670/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值