我有数字显示为范围,例如:3-7天或24-72小时。3-7天或24-72小时。 我需要将这些数字改为168或72这样的数字,这样我就可以最终进行比较或if语句。 我知道我可以直接点击CTRL H,然后通过每个条件来格式化数据,但我一直在试图找到一种方法来通过查询来实现这一点。 我对Access很陌生,所以我可能是想错了。 我试着输入了以下内容 Expr1: Replace("0-4 Hours", "0-4 Hours", "4")
的字段中,有时它要求输入参数,但它只是创建了一个名为Expr1的列,里面有参数。 我是按照这个网站上找到的替换函数的语法来做的,所以我一定是搞错了。
查询正在寻找一个名为 0-4 Hours
当然,它找不到,所以才会有提示(这应该总是发生,而不是有时,所以这是个谜)。正确的语法。Expr1: Replace([fieldname], "0-4 Hours", "4")
. 然而,这个计算结果只显示给那些有以下内容的记录 0-4 Hours
值。动态计算每条记录的值应该是可以的。
SELECT *, Val(Mid([fieldname], InStr([fieldname], "-")+1)) As Num FROM tablename;
每条记录都必须有值,因为Null会导致错误。
如果所有记录的单位(天数,小时数等)都不一样,那就更复杂了。如果天数和小时数是唯一涉及到的单位,而你想把所有的记录都转换为小时数,那就更复杂了。
Val(Mid([fieldname], InStr([fieldname], "-")+1)) * IIf(InStr([fieldname],"Days")>0,24,1) As Num
再复杂的话,就需要一个VBA自定义函数了。