增删改查sql语句面试(增删改查sql语句内容)

增删改查sql语句面试(增删改查sql语句内容)适用于 SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 PDW Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库 按顺序计算变量并返回最初不等于 的第一个表达式的当前值 例如 返回第三个值 因为第三个值是首个为非 Null 的值 Transact SQL 语法约定 expression 是任何类型的表达式 返回数据类型优先级最高的



适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库

按顺序计算变量并返回最初不等于 的第一个表达式的当前值。 例如, 返回第三个值,因为第三个值是首个为非 Null 的值。

Transact-SQL 语法约定



expression
是任何类型的表达式。

返回数据类型优先级最高的 expression 的数据类型 。 如果所有表达式都不可为 Null,则结果的类型也不可为 Null。

如果所有参数都为 ,则 返回 。 至少应有一个 Null 值为 类型。

表达式是 表达式的语法快捷方式。 即查询优化器将代码 (expression1,...n) 重写为以下 表达式:


因此,输入值(expression1expression2expressionN 等)会被计算多次。 包含子查询的值表达式被视为不确定的且子查询会被计算两次。 此结果符合 SQL 标准。 在每种情况中,第一次计算和后续计算可能返回不同的结果。

例如,执行代码 时,计算子查询两次。 因此,您可能得到不同的结果,具体取决于查询的隔离级别。 例如,在多用户环境中,代码在 隔离级别下可能返回 。 要确保返回稳定的结果,请使用 隔离级别,或使用 函数替换 。 此外,可以重写查询以将子查询推送到嵌套 select,如以下示例中所示:



函数和 表达式具有相似的用途,但是行为可能不同。

  1. 因为 是函数,它只能被计算一次。 如上所述,可以多次计算 表达式的输入值。

  2. 确定结果表达式的数据类型方式不同。 使用第一个参数的数据类型, 则遵循 表达式规则并返回具有最高优先级的值的数据类型。

  3. 结果表达式是否可为 NULL 对于 和 是不同的。 返回值始终被视为不可为 NULL(假定返回值不可为 null)。 相反,具有非 null 参数的 被视为可以为 。 因此,尽管表达式 和 是等效的,但其在结果是否为 null 值方面是不同的。 如果正在计算列中使用这些表达式、创建键约束或生成标量 UDF 确定性的返回值以便可以编制索引,这些值可能会带来不同结果,如以下示例中所示:

    
    
  4. 和 的验证也不同。 例如,可以将 的 值转换为 int;而对于 ,则必须提供数据类型。

  5. 仅采用两个参数。 与此相反, 采用可变数量的参数。

下面的示例演示 如何从第一个具有非 Null 值的列中选择数据。 该示例使用 AdventureWorks2022 数据库。



在以下示例中, 表中包括以下三列,它们包含有关雇员的年薪的信息:hourly wage、salary 和 commission。 但是,每个雇员只能接受一种付款方式。 若要确定支付给所有雇员的金额总数,请使用 仅接受在 、 和 中找到的非 Null 值。


结果集如下。



下面的示例演示 如何从第一个具有非 Null 值的列中选择数据。 对于此示例,假定 表包含此数据:


然后,我们运行以下 COALESCE 查询:


结果集如下。


请注意,在第一行中, 值是 ,而不是 。 此值之所以这样是因为示例中未将 列指定为 的参数。

以下示例使用 来比较三个列中的值,并仅返回列中找到的非 null 值。


结果集如下。



ISNULL (Transact-SQL)
CASE (Transact-SQL)

编程小号
上一篇 2025-03-28 17:40
下一篇 2025-03-23 18:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/48106.html