请给我的SQL算在UNIT_PRICE小数位在我的Access 2007中查询 非常感谢你数位小数Access查询
SELECT SYSADM_PART.ID, SYSADM_PART.UNIT_PRICE FROM SYSADM_PART;
请给我的SQL算在UNIT_PRICE小数位在我的Access 2007中查询 非常感谢你数位小数Access查询
SELECT SYSADM_PART.ID, SYSADM_PART.UNIT_PRICE FROM SYSADM_PART;
我想可能是这样的(但我还没有尝试过):
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是一个数字,这就是为什么我已经转换为一个字符串。
道歉,如果这是错误的。
让我知道它是否有效,我没有办法试试!
这将使用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
还要注意,这不适用于空值,也不适用于缺少小数点的UNIT_PRICE值。如果现场有空白点,或者没有小数点值,这会工作:
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
我可能已经在激光头括号,但你的想法。