在SQL中使用数学函数的MS Access(Using math functions in Sql

2019-09-22 13:04发布

我设计使用的MS Access在SQL视图的查询:

select floor(num1) from t1;

当我运行它,我得到“未定义功能楼”。

我得到类似的错误CeilModPowerSignSqrtTruncinitcap功能。

是否Jet数据库引擎的SQL语法等同的功能呢?

Answer 1:

更换地板()与INT()。 我通过搜索查看帮助文件,在这种情况下,创下F1而在查询设计器,并搜索得知这个“功能”。 那带我去帮助主题比较VBA和T-SQL的功能。

你或许应该看看的Access数据库引擎SQL参考 。 我无法找到那些通过Jet / ACE和访问表达服务支持的功能一个良好的网上参考。 对于一些未知的原因,Access帮助还没有包括在内,因为喷气3.0喷气/ ACE表情和这个年龄的资源终于从MSDN取出一两年以前:(

请记住,用于访问外使用Jet / ACE表达服务支持的功能小得多的子集,这是可能的运行内部访问你的2007年SQL广义上讲,VBA5功能(从方法不同)时,使用Access表达式服务是包括简单的数据类型(如,比如说,从数组或对象不同)的Access用户界面的外部支撑; 对函数名的近似列表中看到的部分“与Jet 4.0 Service Pack 3和以后使用沙盒模式操作” 这个MSDN文章 。

此外,在VBE帮助功能的参考应该是一个起点。

帮助文件是不完美的,但有点搜索应该得到你所需要的。



Answer 2:

Public Function Floor(ByVal x As Double) As Double
'Be Because VBA does not have a Floor function.
'Works for positive numbers
'Turns 3.9 -> 3
'Note: Round(3.9) = 4

    Dim s As String, dPos As Integer
    s = CStr(x)
    dPos = InStr(s, ".")
    Floor = CLng(Left(s, dPos - 1))
End Function


Answer 3:

如前所述,地板是不是在可接入性,你应该使用int()作为替代。 如果你坚持要用楼,你总是可以创建类似的MDB文件中的VBA模块功能如下但这可能是矫枉过正。

Public Function floor(dblIn As Double, dec As Integer) As Double
  decPosition = InStr(Str(dblIn), ".")
  x = Left(dblIn, decPosition + dec - 1)
  floor = x
End Function

类似于您上面的描述您可以创建额外的功能来创建此功能集的其他数学运算。



文章来源: Using math functions in Sql with MS Access