请给我SQL来计算Access 2007查询中unit_Price中的小数位数 非常感谢你
SELECT SYSADM_PART.ID, SYSADM_PART.UNIT_PRICE
FROM SYSADM_PART;
答案 0 :(得分:0)
我认为它可能是这样的(但我还没试过):
SELECT
SYSADM_PART.ID,
SYSADM_PART.UNIT_PRICE,
(Len([SYSADM_PART.UNIT_PRICE]) - InStrRev(Str([SYSADM_PART.UNIT_PRICE]), ".")) AS decimal_places
FROM SYSADM_PART
这是一个有根据的猜测。我假设Unit_Price是一个数字,这就是为什么我已经转换为字符串。
道歉,如果这是错的。
让我知道它是否有效,我无论如何都无法尝试!
答案 1 :(得分:0)
这将使用Mid()并将数值强制转换为字符串。 Mid()和InStr()函数在Access中进行隐式强制,但我不知道它们的Jet版本是否也会这样做,所以我用显式类型转换编写它。
SELECT SYSADM_PART.ID, SYSADM_PART.UNIT_PRICE,
Len(Mid(CStr(SYSADM_PART.UNIT_PRICE), InStr(CStr(SYSADM_PART.UNIT_PRICE) + 1, "."))) AS decimal_places
FROM SYSADM_PART
另请注意,这不适用于Null,也不适用于缺少小数点的UNIT_PRICE值。如果该字段具有Null或没有小数点的值,则可以使用:
SELECT SYSADM_PART.ID, SYSADM_PART.UNIT_PRICE,
IIf(IsNull(SYSADM_PART.UNIT_PRICE) Or (InStr(SYSADM_PART.UNIT_PRICE, ".") = 0), 0, Len(Mid(CStr(SYSADM_PART.UNIT_PRICE), InStr(CStr(SYSADM_PART.UNIT_PRICE) + 1, ".")))) AS decimal_places
FROM SYSADM_PART
我可能会对这些问题造成不平衡,但你明白了。