我正在将 SQL 从 Teradata 转换为 SQL Server

在 Teradata 中,它们的格式为

SELECT col1, col2
FROM table1
INTO @variable1, @variable2

在 SQL Server 中,我发现

SET @variable1 = (
SELECT col1 
FROM table1
);

每个语句只允许一个列/变量。如何使用单个 SELECT 语句分配 2 个或多个变量?

有帮助吗?

解决方案

SELECT @variable1 = col1, @variable2 = col2
FROM table1

其他提示

SELECT @var = col1,
       @var2 = col2
FROM   Table

以下是有关 SET / SELECT 的一些有趣信息

  • SET 是变量赋值的 ANSI 标准,而 SELECT 不是。
  • SET一次只能一次分配一个变量,选择可以一次进行多个分配。
  • 如果从查询分配,SET 只能分配标量值。如果 query 返回多个值/行 则 SET 将引发错误。选择 将其中一个值分配给 变量并隐藏以下事实: 返回了多个值(因此 你可能永远不会知道为什么会这样 其他地方出了问题 - 玩得开心 对那个进行故障排除)
  • 从查询分配时,如果没有返回的值,则设置将分配null,其中选择将根本不会使分配(因此变量将不会从其上一个值中更改)
  • 就速度差异而言 - SET 之间没有直接差异 和 SELECT。然而,SELECT的能力 在一次中完成多项作业 射击确实给了它一个轻微的速度 优于 SET。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top