2011-02-23 23 views

回答

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是一個數字,這就是爲什麼我已經轉換爲一個字符串。

道歉,如果這是錯誤的。

讓我知道它是否有效,我沒有辦法試試!

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 

還要注意,這不適用於空值,也不適用於缺少小數點的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 

我可能已經在激光頭括號,但你的想法。