| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3429 人关注过本帖
标题:如何批量地将双字节(全角)字母转换为单字节的(半角)字母
只看楼主 加入收藏
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 8楼 TonyDeng
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-01-07 23:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我2楼提醒了楼主,还是结帖那么快,就是求快的结果,等你把所有数据都变成这种偶尔出现乱码的时候,看你怎么恢复原状。个别的成功不等于正确。9楼的处理办法也不行,不能把那些字符连起来,必须逐个逐个判断并替换,查表是唯一确保正确的做法,贪方便不写代码是不行的,可惜总有人尝试。

授人以渔,不授人以鱼。
2013-01-07 23:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这种错误是很隐蔽的,常规的检测很难发现,抱侥幸心理,偶然会过关,但数据库长期运行之下,总会有出问题的时候,到时就怎么都不会想到是这个原因。其实在逻辑上推敲一下就知道这个做法是没有按照要求做的,那么我们就审问自己,为什么不按需求提供解决方案?同样,提问题的用户,也要问一下自己,提出这种要求的时候,想过需要指出哪些是要转的、哪些是不要转的这个问题吗?

授人以渔,不授人以鱼。
2013-01-07 23:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
其实,标题本身是很明确的,“如何批量地将双字节(全角)字母转换为单字节的(半角)字母”,要解决的只是字母,不是连汉字也一并解决,标点符号没说,就已经存疑了。虽然,有人可能说我举的例子很不正常,但你能保证在单纯的汉字文章中,这种转换法就必定不会碰到类似的问题?万一真有呢?字符的组合无穷大,穷举测试是不可能的;同样,搞数据库的,面对的数据也是无穷大的,你根本想象不到现实存在的数据可能会是如何的变态,只有你想不到的,没有你自以为不可能存在的(不搞数据库的技术狂永远不会懂得这种道理,所以他们从来不写防御性编码,也不存在那种意识)。在我们使用一些自己也不清楚它的运作机制的现成指令的时候,千万要小心,那就意味着你把方向盘交到别人手上,命运不由自己控制,越多这样的东西,程序就越不是自己能够把握的,出错了也无法收拾。

授人以渔,不授人以鱼。
2013-01-07 23:56
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
9楼的代码应该是可行的

坚守VFP最后的阵地
2013-01-08 00:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那是因为你看到ABCD连在一起,实际的数据不是这样连着的呀。

授人以渔,不授人以鱼。
2013-01-08 00:30
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
确实有道理

坚守VFP最后的阵地
2013-01-08 00:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
和T版在一起,真是长见识。

坚守VFP最后的阵地
2013-01-08 00:44
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
经验证:CHRTRANC()函数可以解决楼主的问题
程序代码:
CREATE CURSOR TABNAME (T C(40),T1 C(40))
INSERT INTO TABNAME VALUES ([Fidelity(大连)商务服务有限公司],[])
INSERT INTO TABNAME VALUES ([FIL(大连)科技有限公司],[])
REPLACE ALL T1 WITH T
REPLACE ALL T1 WITH CHRTRANC(ALLTRIM(T1),[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz],[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz])
BROWSE
效果图
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 sdta 于 2013-1-8 03:04 编辑 ]

坚守VFP最后的阵地
2013-01-08 03:03
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
呵呵。以为成功了。便结贴了。多谢T版提醒

我是来向高手学习的!
2013-01-08 16:14
快速回复:如何批量地将双字节(全角)字母转换为单字节的(半角)字母
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031959 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved