請給我的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
我可能已經在激光頭括號,但你的想法。