字段值中的空格被截,怎么办?(100分)

  • 主题发起人 主题发起人 Apeng
  • 开始时间 开始时间
A

Apeng

Unregistered / Unconfirmed
GUEST, unregistred user!
varchar类型的字段,存入如‘haha ’,在程序中取出来就成了‘haha’,
右面的空格没了,怎么办?
在sql7的Query Analyzer中查询是有空格的啊。
 
看你的代码中是否有Trim之类的函数。
 
似乎是数据库自己把它截掉了。
 
你在程序中取出来后放在什么类型的变量中呢?delphi会自动把string类型的右边得空格
删除,format一下就可以了
 
你用Length函数可以查看它的长度,是五。
如果空格在其它位置也不会少。
 
migrator:
不太明白,举个例子好吗

我的程序是这样写的:
str:=TempQuery.FieldbyName('feild1').AsString;
 
VARCHAR类型的字符就是这样的.
你要保留空格,用STRING吧
 
同意yunshang的看法。
 
str:=TempQuery['feild1']
or
str:=TempQuery.FieldbyName('feild1').value;
try it!
 
to hhzh426:
还是不行:(
 
你可用:str:=format(TempQuery.FieldbyName('feild1').AsString);
 
你用VARCHAR类型,空格肯定是没有了。
你必须换用CHAR。

 
如果你想加入空格符,只需在数据存入时将原有字符串加chr(27)就行。
例:
table1.fieldbyname('field1').asstring:=edit1.text+chr(27);

Try It
 
试一试下面Delphi5.0提供的例子:(它的解释是得到field的原始数据。)
with Field1 do
begin
if not IsBlob { this does not work for BLOB fields }
begin
{ Allocate space }
GetMem(MyBuffer, DataSize);
try
if not GetData(MyBuffer) then
MessageDlg(DisplayName + ' is NULL', mtInformation, [mbOK], 0)
else
{ Do something with the data };
finally
{ Free the space }
FreeMem(MyBuffer, DataSize);
end;
end;
end;
 
奇怪,为什么我在Query Analyzer中看是有空格得呀
不是说varchar字段是不保留空格的吗?

yunshang怎么解释?
 
>>奇怪,为什么我在Query Analyzer中看是有空格得呀不是说varchar字段是不保留空格的吗?

这和 ANSI_PADDING设置有关,如果set ANSI_PADDING on,则varchar也是保留空格的,
否则不保留。而BDE则是不管3721,全部去掉。如果用ADO,就会看到保留空格。
 
bde中有没有类似得API?
 
附加功能 将问题提前
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部