Access中Left()和Left $()函数之间的区别

Ada*_*cha 2 ms-access access-vba

我正在尝试调试损坏的查询。该查询使用Left $([blahblah],4)而不是Left([blahblah],4)。

Microsoft Access中的Left()和Left $()函数之间有什么区别?

Ada*_*cha 5

尾随的$是VBA中String数据类型的类型声明字符。

从Left $()返回的结果是一个字符串,而Left()返回一个Variant。

如果可能会有Null值,则必须使用Left(),而不是Left $(),因为Variant可以为Null,而String不能。为了证明这一点:

  1. 按Ctrl + G打开Immedate窗口。

  2. 输入:Left(Null,1)答案是Null。

  3. 现在输入:Left $(Null,1)这将产生错误94。由于结果应为Null,并且String不能为Null,因此您会收到错误“无效使用Null”。

如果要处理字符串值,则在VBA代码中,Left $()会稍微提高效率,因为它避免了与Variant关联的开销/效率低下。但是,如果有任何机会,空值可能会涉及,用左(),或者明确地作为的Nz一些诸如处理空值()。

如果传递NULL,则left $()将返回字符串或生成错误

如果传递NULL,则left()将返回字符串或NULL。

有关Null的更多信息:http : //allenbrowne.com/casu-11.html