什么是空值?

部署运行你感兴趣的模型镜像

与数据库开发相关的空值是生活中的一个小谜团,对于那些冒险进入数据库世界的新手来说,这是一个完全困惑的话题。 Null值不为零(0),长度为零(0)的字符串,空字段或根本没有任何值-那么Null到底是什么? 本主题的目的是希望解释什么是Null值,讨论有关Null的一些特性,展示我们如何检测到它们,最后是如何将它们转换为不太弯曲的实体。

  1. 什么是空值?
    1. Null是Variant子类型,用于指示数据项不包含有效数据,缺少数据或数据是未知的。 此特殊值不是像“ Smith”,#12/24/2006#,25.98等的真实值,而是指示数据丢失,未知或不适用。 默认情况下,表或查询字段以及表单或报表控件中的数据具有变量数据类型。 当您将“字段”或“控件”留为空白时,将自动存储空值。 要记住的一个关键点,值得重申的一点是,只有Variant Data Type con包含Null。
  2. 有关Null值的一些特殊性。
    1. 如果表达式的“任何”部分求值为空值,则整个表达式也将具有空值。 这称为空值传播,这是我们应该采取步骤处理它们的关键原因。
    2. 如果内置或自定义函数的参数求值为Null,则该函数通常返回Null值。 例如,如果您使用SQL或聚合函数来为一组记录计算字段的汇总值,则该字段中具有空值的记录将不计算在内。
    3. 当您在查询中联接表时,联接字段中具有空值的记录不包括在查询结果中。
    4. 创建关系并强制执行参照完整性时,仍可以通过在子表中将联接字段保留为空白来在子表中创建孤儿。
  3. 您如何检测空值?
    1. 幸运的是,我们有一个函数,该函数返回一个布尔值,该布尔值指示表达式是否包含有效数据(空)。 此函数是IsNull()函数,仅包含1个必需的参数:
    IsNull(<expression>)      'returns True if expression is Null
    'The required expression argument is a Variant containing a numeric expression or string expression. 
  4. 将Null转换为危害较小的东西。
    1. 幸运的是,我们有一个与Nulls永无休止的盟友,这就是Nz()函数。 当Variant为Null时,可以使用此函数返回零,零长度字符串(“”)或另一个指定的值。 例如,您可以使用此函数将Null值转换为另一个值,并防止它通过表达式传播。

      Nz(variant, [valueifnull])
      变量Argument是数据类型Variant的变量。 valueifnull参数是可选的(除非在查询中使用)。 如果Variant参数为Null,则它是Variant,提供要返回的值。 此参数使您可以返回零或零长度字符串以外的值。

      如果variant参数的值为Null,则Nz函数将返回数字零或零长度的字符串(在查询表达式中使用时始终返回零长度的字符串),具体取决于上下文是否指示该值应为数字或字符串。 如果包括可选的valueifnull参数,则当variant参数为Null时,Nz函数将返回该参数指定的值。 在查询表达式中使用时,NZ函数应始终包含valueifnull参数,

      如果variant的值不为Null,则Nz函数将返回variant的值。
    Dim varVariant As Variant
    varVariant = Null 
    Debug.Print Nz(varVariant)              'returns a Zero length String
    Debug.Print Nz(varVariant, "Null")      'returns the String Null 
    Dim intTest As Integer
    intTest = 600
    Debug.Print Nz((intTest * varVariant) / 16, 9999)      'returns 9999

From: https://bytes.com/topic/access/insights/716197-what-null

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### SQL 中 NULL 的概念及意义 在关系型数据库中,`NULL` 表示缺失值或未知值。它并不等于零 (`0`) 或空字符串 (`''`),而是一个特殊的标记,用于表明某个字段的值尚未定义或者不存在[^1]。 #### 处理空值参与的运算方法 当 `NULL` 参与算术运算时,其结果通常也是 `NULL`。这是因为任何涉及未知值的操作都会导致不确定的结果。为了应对这种情况,在 SQL 中提供了多种函数来处理 `NULL` 值: - **IFNULL()**: 替代 MySQL 数据库中的 `NULL` 值为指定默认值。例如: ```sql SELECT IFNULL(commission_pct, 0) AS commission FROM employees; ``` 这里如果 `commission_pct` 是 `NULL`,则返回 `0`。 - **COALESCE()**: 返回参数列表中第一个非 `NULL` 的表达式的值。此函数适用于跨多个数据库引擎的情况。例如: ```sql SELECT COALESCE(price, 0) AS final_price FROM products; ``` - **IS NULL 和 IS NOT NULL**: 判断某一列是否为空值。这可以帮助过滤掉那些含有 `NULL` 的记录。例如: ```sql SELECT * FROM orders WHERE order_date IS NOT NULL; ``` #### 示例分析 假设有一个表 `sales` 记录每日的商品销售情况,其中包含三列:`date`, `revenue`, 和 `refund`。某些天可能没有发生退款活动,因此 `refund` 字段可能是 `NULL`。要计算每天的实际净收入(即总收入减去总退款),可以这样写查询语句: ```sql SELECT date, revenue - IFNULL(refund, 0) AS net_revenue FROM sales; ``` 这里利用了 `IFNULL()` 将潜在的 `NULL` 转化成 `0` 来完成正常的数值相减操作[^2]。 #### 关于谓词运算中的注意事项 值得注意的是,在条件判断过程中也需要特别注意 `NULL` 的影响。比如简单的比较符 `=` 或者 `<>` 都无法匹配上带有 `NULL` 的数据行。这意味着即使尝试通过这些标准逻辑运算符捕获所有可能性,仍会遗漏部分真实存在的 `NULL` 情况[^3]。 最后提到的一个场景涉及到商品销量统计问题。给定一张表格存储每笔交易金额以及类型标志位(区分货款还是退款)。可以通过如下方式获取最终的日销数量: ```sql SELECT sale_date, SUM(CASE WHEN type = '0' THEN amount ELSE 0 END) - SUM(CASE WHEN type = '1' THEN amount ELSE 0 END) AS daily_sales_volume FROM transactions GROUP BY sale_date; ``` 上述代码片段展示了如何安全地忽略可能出现的 `NULL` 并正确执行加减法[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值