对于所选行,名为val
的列为fieldName
时,null
(字符串类型)会得到什么值?这里myQry
是一个数据库查询。
val := myQry.FieldByName('fieldName').AsString
此处列fieldName
确实存在于表中,但对于选定的行/记录,值为null
。我看了here。它提供了丰富的信息,但我不担心我需要的信息。我也看了this,但这也没什么用。
答案 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是绝对安全的。