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

时间:2016-06-18 17:38:43

标签: ms-access access-vba

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

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

2 个答案:

答案 0 :(得分:4)

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

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

如果有任何Null值,你必须使用Left(),而不是Left $(), 因为Variant可以是Null但String不能。为了证明:

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

  2. 输入: ?左(NULL,1) 答案是空的。

  3. 现在输入: ?左$(NULL,1) 这会生成错误94.因为结果应该是Null和String 不能为空,您收到错误“无效使用Null”。

  4. 如果你正在处理字符串值,在VBA代码中,Left $()会稍微 更有效率,因为它避免了与之相关的开销/低效率 变种。但是,如果任何机会可能涉及Null,请使用 Left(),或者使用诸如Nz()之类的东西显式处理Null。

      

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

         如果传递NULL

    left()将返回一个字符串或NULL

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

答案 1 :(得分:2)

唯一的区别是 Left 接受Null,而 Left $ 则不接受。

如果传递了一个字符串,两者都会返回一个字符串。 VarType: vbString

如果传递Null, Left 返回Null值。 VarType: vbNull

它们都以相同的速度运行,大约12 mio。迭代公关第二,因此并不重要。实际上,如果记录了很多样本​​,则平均左边是更快的分数

所以,简而言之:如果您希望在参数值Null上引发错误,请使用Left $,否则保存您的输入。