当FieldByName('fieldname')具有空值时,AsString返回的值是多少?

时间:2016-10-26 05:50:48

标签: delphi

对于所选行,名为val的列为fieldName时,null(字符串类型)会得到什么值?这里myQry是一个数据库查询。

val := myQry.FieldByName('fieldName').AsString

此处列fieldName确实存在于表中,但对于选定的行/记录,值为null。我看了here。它提供了丰富的信息,但我不担心我需要的信息。我也看了this,但这也没什么用。

3 个答案:

答案 0 :(得分:6)

通常,根据实际的字段类型,返回空字符串。但这确实取决于TField后代的实现,并且您没有说明它是什么。

为了区分null和空字符串,请使用该字段的IsNull属性。

答案 1 :(得分:6)

您只需拨打

即可自行测试
MyDataSet.FieldByName('MyField').Clear

将MyField设置为Null,然后在其上调用AsString将返回一个空(零长度)字符串。

TField后代的GetAsString方法通常包含如下代码:

function TIntegerField.GetAsString: string;
var
  L: Longint;
begin
  if GetValue(L) then Str(L, Result) else Result := '';
end;

如果可以从当前记录缓冲区中检索值,GetValue成功。如果失败,则该字段将包含Null

答案 2 :(得分:3)

如果字段有值,则返回字符串的字符串值;如果字段没有值,则返回空字符串。 AsString不使用DisplayText或其他东西。 在NULL值字段上调用AsString是绝对安全的。