如何让delphi读取Char字段去掉后面多余的空格!我用的是oracle10G,以前用oracle8i的时候用的是dbExpress中的SQLConnection,连接后就自动去除空格,但升级服务器换10G的后原来的方法速度太慢了,用ADO来连接则后面多出空格,dbExpress的升级oracle10G的升级版(dbexpoda.dll)也跟着空格。怎么解决啊?
(不可能每个查询语句都用Trim()来去除,更改数据类型也不现实,毕竟是做了两年的工程啊)

解决方案 »

  1.   

    Oracle的Char型本身就是不足位数要求时补足空格的,可以在查询中加上Trim(字段名),或者用应用程序中的tirm功能实现。
    如果查询结果较多在客户端是分页显示,从性能上将在应用程序中Trim的方法效率较高。
      

  2.   

    我也知道用Trim能去除空格,但不是并不是我想要的,原本oracle8i时用dbExpress中的SQLConnection连接读出来的数据直接去掉空格的,现在升级服务器成10G那方法就出现空格了,开发了两年了七百多个表要加起Trim那是多大的工作量啊,现在我就想知道还有其实什么方法连接能去直接掉空格。
      

  3.   

    看来你的问题不是应用的问题,而是为忽视的简单可行性的问题。
    既然这样,是否可以考虑扩展DBExpress呢?
    在新版本的DBExpress上扩展自己的控件,去掉空格、满足原有的DBExpress的功能。
    这样你的代码修改量很小,也不需要去修改那么多的SQL文。
    当然这个很难,不过是一条思路。最后,使用SQLConnection直接去掉Char型字段数据中的空格,这种做法本身就不是很合理。
    如果字符串前后有业务需要的空格怎么处理呢?既然使用Char类型,就要考虑到他与Varchar2的差别。
      

  4.   

    对delphi不熟悉,可以试试odbc么?还有个办法就是把类型从char改为varchar2(char)。备份以后批量改,应该可以。改完以后要重建索引,重新导入数据。
      

  5.   

    to doer_ljy: 以前是用Oracle8i+Delphi7来编写的,用DBExpress的SQLConnection用的是dbexpora.dll这种连接方式得出来的char字段就是不跟空格的。原本没有注意到这个问题,只是考虑到Char要比Varchar2速度快点。后来升级到oracle10G速度奇慢,后来我也去咨询了CoreLab公司并下载了最新的dbexpoda.dll但Char后面就跟空格了,再去询问就再也没有答复。至于修改控件我也想过,但DBExpress对字段类型等处理好像是放在dbexpora.dll里面的,其实地方也看了但都却没有可以下手的地方,或许是我不知道吧,如果有什么思路还请指导一二,小弟在此谢过了。to fenixshadow :你试试看用odbc能去掉空格吗?工程是CS模式的更改类型的话那相应的很多程序也要跟着修改,工作量很大,我就是不想修改才想寻求其实连接方法。
      

  6.   

    回复5楼,修改为varchar2(char)不会导致Client修改的吧。
    只需要修改数据库。
      

  7.   

    再次回复5楼,你的态度很恶劣。请教人是这样的么?“to   fenixshadow   :你试试看用odbc能去掉空格吗?”任何人都不能对所有领域精通。肯来这里帮你出主意已经给你面子了。你什么态度啊。
      

  8.   

    能修改数据结构我早修改了,因为我用的是ClientDataSet数据集,基本上都添加了ADD fields。这就要要修改client的地方。做了两个的工程,真要一个一个程序修改恐怕工作量很大。
    再次说明我并不会特意针对谁,如果有我也不是有意的。
      

  9.   

    corelab 与 Borland公司有什么关系??