急!!!关于MS SQL Server的字符字段的空格问题 老兄,搞错了吧,oracle好像才有这样的问题,我做了多过系统都是用SQlserver都没有发现过这样的问题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问这个字段的内容是怎么写进去的,我怀疑你用的是Pchar变量,它在获得内存的时候是固定长度的,所以要用"#0"填充,你只要将第一个#0后的干掉后转换为string就行了。 改用VARCHAR,然后用:UPDATE TABLE1 SET FIELD1 = TRIM( FIELD1 )把空格去掉就OK了. to wenzm:oracle好象也没这种问题吧!? dbgrid中的宽度并不是根据这个字段中记录长度变化的,因为你在生成这个字段时已经定死了它的宽度,注意你Dataset控件中的field,所以dbgrid中的显示除非你写代码控制某column的宽度,不然不会变的! 比如,你知道这个字段中最长记录的长度是19,你可以通过field[1].displaywidth:=19来控制 我试了一下,如果直接用ADOConnection连接数据库并用ADOTable(或ADOQuery)的话,varchar类型无空格返回,char类型则有,例如数据库MyOffice中有一表格People,其中字段PSearch为char类型,长度为7,我用SQL Server的Enterprise Manager查看的时候,其中的内容为'abc ',而且无法删除后面的空格(这时的空格可能是系统自己加的空档,因为我输入的是'abc',另我是直接从DBGrid中输入的),ADOQuery得到的数据的长度也是7,即使我从DBGrid中将空格删除,post之后仍然不行。 由于我是打算在N-Tire结构中使用,当我在客户端连接到服务器并且用DBGrid显示时,char类型仍有空格,若数据库中有一varchar类型的数据'abc',字段长度为6,则显示时为'abc',但是只要变动一下,例如改为'ab',当ApplyUpdates并且Refresh后,则数据变为'ab ',且数据库中的数据也变更为'ab '.我用的MS SQL Server版本为7.0,Delphi版本为5.0,N-Tire结构(用的DCOM),服务端用ADOConnection以及ADOQuery做的连接,客户端用ClientDataSet连接. 我也遇到过类似问题。我当时是在要用到这个数据的地方读出来用trim函数去掉后缀空格。 这事我还是没有,我现正点写的程序跟你一样,也是ADO连接,三层结构你看看 Field中 FixedChar是否指定为true? 这事儿我遇到过,rtrim可以解决,不行再加一个ltrim,甚至可以用replace函数,总之放在后台。 Delphi调用VC++的动态库问题 托盘程序不能关闭 关于IdUDPServer 端口 把主调程序的变量传到DLL的窗体上. 关于用delphi7开发ePass 1000接口函数的问题 线程中的clientsocket 请教一个超简单问题!!!高分回送!! 关于多线程同时使用TCustomWinSocket.SendBuf的问题 十万火急!!!关于楼宇呼叫系统232接口的问题有谁知道!帮帮小弟的忙!!不胜感激!再线等待!up有分! 四位16进制转换成浮点型,如何实现 在注册表中怎么算出一个主键里有多少个项目? table的filter可以过滤lookup字段吗
UPDATE TABLE1 SET FIELD1 = TRIM( FIELD1 )
把空格去掉就OK了.
oracle好象也没这种问题吧!?
它的宽度,注意你Dataset控件中的field,所以dbgrid中的显示除非你写代码控制某column
的宽度,不然不会变的!
由于我是打算在N-Tire结构中使用,当我在客户端连接到服务器并且用DBGrid显示时,char类型仍有空格,若数据库中有一varchar类型的数据'abc',字段长度为6,则显示时为'abc',但是只要变动一下,例如改为'ab',当ApplyUpdates并且Refresh后,则数据变为'ab ',且数据库中的数据也变更为'ab '.我用的MS SQL Server版本为7.0,Delphi版本为5.0,N-Tire结构(用的DCOM),服务端用ADOConnection以及ADOQuery做的连接,客户端用ClientDataSet连接.
我当时是在要用到这个数据的地方读出来用trim函数去掉后缀空格。
你看看 Field中 FixedChar是否指定为true?