ACCESS 说一说Round,VAL与NZ这三个函数在SQL中的应用

发布时间 2023-08-07 11:51:04作者: 一曲轻扬

Round是用来处理浮点计算的,如果不处理,原本一个29.9,它能给你算成29.899500000012345.

如果字段属性是文本格式,你再怎么round都没用,所以在这之前,你得把文本类型的字段,转成数字类型的字段.方法也很简单,比如 [字段]*1.但是这里又会产生一个新的问题,比如字段下面有null值或者其他不能转成数字的值的话,就又会 #错误 .所以一方面要求我们在定义字段的数据类型时,要严谨.另一方面,自己做出来的表,脆着也要走完...那就处理错误呗.

  VAL函数:

  • VAL函数会忽略字符串中的前导空格。
  • 它会解析数字之前的正负号(“+/-”)。
  • 如果字符串以非数字字符开始,Val 函数将返回 0。
  • 如果字符串以数字字符开始,但在解析过程中遇到非数字字符,Val 函数将返回数字解析到的最后一个有效字符之前的部分。
    Dim num As Double
    num = Val("123.45") ' 将字符串转换为数值,num 的值为 123.45
    
    Dim str As String
    str = "abc123"
    num = Val(str) ' 尝试从字符串中解析数字,由于字符串以非数字字符开始,num 的值为 0
    
    str = "12.34xyz"
    num = Val(str) ' 尝试从字符串中解析数字,但解析到非数字字符 "x" 时停止,num 的值为 12.34
    
    str = "  -45.67"
    num = Val(str) ' 将带有前导空格和负号的字符串转换为数值,num 的值为 -45.67

    NZ函数:

  • NZ函数用于处理空值(Null)。它接受两个参数:表达式和替代值。如果表达式的值为 Null,NZ 函数将返回替代值,否则返回表达式的值。
  • NZ函数的返回值类型与第一个参数的数据类型相同。如果第一个参数为 Null,则返回值的数据类型为第二个参数的数据类型。如果第一个参数和第二个参数都为 Null,则返回值的数据类型由上下文决定。

  但是我在日常应该中,经常遇到在使用 nz([字段],0) 时,返回给我一个文本类型的值,我不知道是什么原因.所以我不得不这样去使用它 : Round(Nz([查询1].[单价], 0)*1,2) .其中NZ是把null值转成0,结果返回的却是"0",所以我不得不再 *1 之后 再Round