IIF查询十进制删除

问题描述 投票:0回答:1

尝试在MS访问中尝试以下操作

将一个域中的数据转换为以另一域中的01开头的18位数字。

这里是查询:

SELECT MasterVacant.ParcelIdNumber,
    "01" + Mid([ParcelIdNumber],1,2) + "00" + Mid([ParcelIdNumber],4,2) + Mid([ParcelIdNumber],7,1)
        + IIf(Mid([ParcelIDNumber],11,1) = "", "0"+Mid([ParcelIDNumber],9,2), Mid([ParcelIDNumber],9,3))
        + IIf(Mid([ParcelIDNumber],14,1) = ".", "0"+Mid([ParcelIDNumber],12,2), Mid([ParcelIDNumber],12,3))
        + Mid([ParcelIDNumber],15,3) AS ParcelNumber
FROM MasterVacant;

这里是一个开始和结束的示例...

[011200061000050000应该变成12-06-1-00-50.000-RR011200063007009000应该变成12-06-3-07-09.000-RR0113000351001129.00应该变成13-35-1-01-129.000-RR

问题是,当像第三组数据中那样有13个数字时,如何删除小数?

ms-access decimal access iif-function
1个回答
0
投票

我假设您的意思相反:

12-06-1-00-50.000-RR should become 011200061000050000 
12-06-3-07-09.000-RR should become 011200063007009000 
13-35-1-01-129.000-RR should become 0113000351001129.00

我建议在REPLACE()中将MSACCESS去除破折号。一旦破折号就可以了MID()

不幸的是,您尝试的代码与第三行的功能有所不同,因为在我看来应该只有两个零的情况下会放入3个零。

在文本框中尝试:

=Replace("13-35-1-01-129.000-RR","-","")

将返回1335101129.000RR并查看是否有助于您编写代码。

也许更进一步,将其放入函数中。

© www.soinside.com 2019 - 2024. All rights reserved.