中英文字符混合处理方法
发表于: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