打印本文 打印本文 关闭窗口 关闭窗口
如何在SQL Server2000中处理半个汉字的问题
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3704  更新时间:2008/12/14 2:05:55  文章录入:mintao  责任编辑:mintao

/* written by enydraboy ,2003-07-17 */
/*
发表于CSDN */
/*
转载请注明出处和保留此版权信息 */

csdn的专家论坛中,看到有一位朋友问起关于“由于从其它数据库中导入的数据存在半个汉字的问题,所以希望能在查询语句中将这半个汉字处理掉,怎么处理都行。望各位高手不吝赐教!”的问题,启初有点意外,但是后来觉得从这个问题可以带出一些SQL Server汉字中存储和处理的方法,觉得有必要总结一下。

汉字是由两个字节存储的,每个字节的数值都>127。所以上面的问题的解决方案就是:把字符串按字节顺序截取,当出现第一个字节是>127,但是后面一个字节是<127的这种情况,就丢弃掉。

接下来,我们要明确些技术细节:

(1) SQL Server中有很多字符串相关的操作函数,但是直接去操作包含了汉字的字符串,会有点问题。说明如下:LEN计算长度的时候,会把汉字和英文字符都看成长度一样的;substring也是这样,ascii是返回第一个字节的ASCII 码。

Example:

select len(''''你好a''''),substring(''''你好a'''',1,1),ascii('''''''')

结果是

                            

-----------       ---- -       ----------

3                     196

一定要把字符串要转换成varbinary来处理,才可以。

 

(2) SQL Server中,如何把ASCII码组合成汉字,就是把高字节和底字节分别转成字符再拼接起来。如char(210)+char(166)就是姚这个汉字。

再明确了上面的技术细节后,接下来就可以解决问题了。我通过编写一个函数来解决问题。

[1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口