在sqlserver2000中处理半个汉字的问题

在sqlserver2000中处理半个汉字的问题

ID:23831014

大小:57.00 KB

页数:5页

时间:2018-11-10

在sqlserver2000中处理半个汉字的问题_第1页
在sqlserver2000中处理半个汉字的问题_第2页
在sqlserver2000中处理半个汉字的问题_第3页
在sqlserver2000中处理半个汉字的问题_第4页
在sqlserver2000中处理半个汉字的问题_第5页
资源描述:

《在sqlserver2000中处理半个汉字的问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、在SQLServer2000中处理半个汉字的问题>>教育资源库  问:由于从其它数据库中导入的数据存在半个汉字的问题,所以希望能在查询语句中将这半个汉字处理掉,请问怎样才能解决这个问题?  答:汉字是由两个字节存储的,每个字节的数值都>127。所以上面问题的解决方案就是:把字符串按字节顺序截取,当出现第一个字节是>127,但是后面一个字节是<127的这种情况,选择丢掉。  接下来,我们来明确技术细节:  (1)在SQLServer中有很多字符串相关的操作函数,但是直接去操作包含了汉字的字符串,

2、会有点问题。说明如下:LEN计算长度的时候,会把汉字和英文字符都看成长度一样的;substring也是这样,ascii是返回第一个字节的ASCII码。Example:selectlen('你好a'),substring('你好a',1,1),ascii('你')结果是              -----------   -----   ----3     你     196  一定要把字符串要转换成varbinary来处理,才可以。  (2)SQLServer中

3、,如何把ASCII码组合成汉字,就是把高字节和底字节分别转成字符再拼接起来。如char(210)+char(166)就是姚这个汉字。  再明确了上面的技术细节后,接下来就可以解决问题了。我通过编写一个函数来解决问题。createfunctionfn_TruncSemiHanzi(strvarchar(4000))returns varchar(8000)asbegindeclaresTmpvarchar(8000),iint,itmpint,itmp2int,stmp2varchar(2)selectsTmp=

4、' selecti=1 p=convert(int,substring(convert(varbinary,substring(str,i,1)),1,1))--截取一个字节  ifitmp>127   begin   --大于127检查后面一个字节selectitmp2=convert(int,substring(convert(varbinary,substring(str,i,1)),2,1))   ifitmp2>127   begin    selectstmp2=char(itm

5、p)+char(itmp2) --是一个完整的汉字  end  else  begin    selectstmp2=char(itmp2) --丢弃半个汉字  end end else begin   selectsTmp2=char(itmp) end selectsTmp=sTmp+stmp2 selecti=i+1 end returnstmpend  测试如下:DECLAREstrvarchar(4000)--设置参数值--设置参数值--带有半个汉字,是你这个汉字的前面一部分selectstr=

6、9;b'+char(convert(int,substring(convert(varbinary,'你'),1,1)))+'a你'selectstr 带有半个汉字,dbo.fn_TruncSemiHanzi(str)去掉半个汉字带有半个汉字 长度 去掉半个汉字 长度     ---------------------------------------b腶你     3   ba你     3  我们还可以发现这样一个有趣的现象,由于我是截了半个汉字出来,结果你的前半个

7、汉字的字符和后面一个英文字母a组合,成了一个怪怪的字符腶。  总结:通过这个问题的解决,大家可以了解汉字在SQLServer2000中存储和处理的基本方法,像如何区分一个字符串中是否包含了汉字,和分离字符串中中文和英文都可以套用本文中方法。  本文中测试的环境是Win2000Server(中文)+SQLServer2000(中文),英文环境下没有测试,如有问题,欢迎大家指正。>>>>这篇文章来自..,。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。