【问题标题】:How to DECLARE SET multiple values [duplicate]如何声明设置多个值[重复]
【发布时间】:2022-12-17 17:15:41
【问题描述】:

我正在尝试设置值,但需要设置多个值。

当前代码:

DECLARE @variable AS VARCHAR (100)
SET @variable = 'Y'

我想添加多个值:

SET @variable in ('Y','N')

或者能够使用一个字段作为值:

SET @variable = tbl.field

我需要能够运行代码,以便设置多个值,因为每个选项都需要一次测试。

【问题讨论】:

  • 一个标量值不能包含元组;它是标量多变的。如果要在变量中存储多个值,请使用表类型变量。

标签: sql sql-server set declare


【解决方案1】:

您声明了一个标量变量。它只包含一个值,并且不能包含多个值。

在这种方法中,您可以存储多个值。

DECLARE @variable AS TABLE(val VARCHAR(50))
INSERT INTO @variable(val) VALUES
('Y'),
('N')

SELECT * FROM @variable

【讨论】:

  • 谢谢你,这回答了第一部分。你能帮忙做第二部分吗?我有一些需要包含超过 100 个变量,所以手动输入它们并不是一个真正的选择,所以能够包含表字段会更有帮助
  • INSERT INTO ... SELECT ... FROM、@BeckyPurland 怎么了?
  • 感谢您的输入@BeckyPurland。
【解决方案2】:

正如 Larnu 所写,您不能分配一个标量值来保存两个值。

我的建议是使用一个临时表来保存您的所有值,或者将两个值分配为一个值并使用 STRING_SPLIT 将它们分开。

例如:

DECLARE @variable VARCHAR(100) = 'Y,N'  
SELECT value  
FROM STRING_SPLIT(@variable, ',')  

【讨论】:

    【解决方案3】:

    缩放器变量只能在每个 set/select 语句中存储单个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多