中英文字符混合处理方法

发表于:2007-07-02来源:作者:点击数: 标签:
1,TXT文件导入SQL时 303410001401??????? 600 LANG 4-T粤IG? 0220??? 011840628900000?? BPO 303410001501??????? 600 LANDAU中ER? 0220??? 011840628900000?? BPO 303410001601??????? 600 LANG 6-T汉IG? 0220??? 011840628900000?? BPO 有此一TXT文件要导

1,TXT文件导入SQL时

303410001401??????? 600 LANG 4-T粤IG? 0220??? 011840628900000?? BPO
303410001501??????? 600 LANDAU中ER? 0220??? 011840628900000?? BPO
303410001601??????? 600 LANG 6-T汉IG? 0220??? 011840628900000?? BPO

有此一TXT文件要导入SQL,有固定数据格式,因无明显界定符,将其导成一列,再在SQL中截取分离,存在以下问题:

数据结构给定的长度是单字节长度,但在SQL中使用substring()一个汉字只算一位,在些要求中因汉字是无固定位置,如只算一位将影响后面数据正确性

解决方法:cast(substring(cast(col001 as varbinary(1000)),39,4) as char(18)) as time_id

就是先将字段转成varbinary类型,这样汉字也算2位,截取就满足了固定格式要求了,然后再转回字符型。

2,SQL表导出至TXT中

使用cast(????? as char(20))限定

3,取长度

len()汉字只算1位

使用datalength()汉字算2位

原文转自:http://www.ltesting.net