当前位置:网站首页 > SQL数据库编程 > 正文

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



适用于: 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 值。

 
  

结果集如下。

 到此这篇增删改查sql语句面试(增删改查sql语句内容)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就! 
  

                            

版权声明


相关文章:

  • mysql中主键可以为空吗(mysql中的主键)2025-10-20 17:27:08
  • mysql导入sql文件过大(mysql数据库导入sql文件不成功解决办法!)2025-10-20 17:27:08
  • 数据库初学(数据库初学是access还是mysql)2025-10-20 17:27:08
  • sqlldr 命令(sqlldr命令不存在)2025-10-20 17:27:08
  • 达梦客户端执行sql脚本(达梦如何执行sql脚本)2025-10-20 17:27:08
  • sql循环语句(sql循环语句怎么写)2025-10-20 17:27:08
  • mysql主键语句(mysql主键的作用是什么)2025-10-20 17:27:08
  • mysql查询锁表吗(mysql如何查看锁表语句)2025-10-20 17:27:08
  • sql如何导入sql文件(sql文件怎么导入数据库mysql)2025-10-20 17:27:08
  • sqlldr命令详解(sqlldr 用法)2025-10-20 17:27:08
  • 全屏图片