我正在尝试调试损坏的查询。查询使用 离开$([blahblah],4)而不是左([blahblah],4)。
中的Left()和Left $()函数有什么区别? Microsoft Access?
答案 0 :(得分:4)
尾随$是String数据类型的类型声明字符 VBA。
从Left $()返回的结果是一个字符串,而Left()返回一个 变体。
如果有任何Null值,你必须使用Left(),而不是Left $(), 因为Variant可以是Null但String不能。为了证明:
按Ctrl + G打开Immedate窗口。
输入: ?左(NULL,1) 答案是空的。
现在输入: ?左$(NULL,1) 这会生成错误94.因为结果应该是Null和String 不能为空,您收到错误“无效使用Null”。
如果你正在处理字符串值,在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 $,否则保存您的输入。