Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL查询结果到不带唯一标识符的局部变量_Sql Server_Tsql - Fatal编程技术网

Sql server SQL查询结果到不带唯一标识符的局部变量

Sql server SQL查询结果到不带唯一标识符的局部变量,sql-server,tsql,Sql Server,Tsql,我对SQL比较陌生,我正在尝试编写一个查询,将多行的结果分配到一个局部变量中 DECLARE @x VARCHAR(MAX) SET @x= (SELECT someCol FROM table) --Does important stuff to the @x variable SELECT @x 在研究过程中,我意识到这是行不通的,因为子查询只能返回一个值,而我的查询将返回多个结果。但我不能这样做: DECLARE @x VARCHAR(MAX) SET

我对SQL比较陌生,我正在尝试编写一个查询,将多行的结果分配到一个局部变量中

DECLARE @x VARCHAR(MAX)
SET @x= (SELECT someCol
              FROM table)

--Does important stuff to the @x variable

SELECT @x 
在研究过程中,我意识到这是行不通的,因为子查询只能返回一个值,而我的查询将返回多个结果。但我不能这样做:

DECLARE @x VARCHAR(MAX)
SET @x= (SELECT someCol
              FROM table
              where id= 'uniqueIdentifier')

--Does important stuff to the @x variable

SELECT @x 
我不能使用where子句的原因是我需要对整个表而不仅仅是一行执行此操作。有什么想法吗

编辑:我意识到我的问题太广泛了,所以我将尝试重新格式化代码以提供一些上下文

SELECT        col_ID, col_Definition
FROM            myTable
如果我运行这个查询,colu定义将返回一个大的varchar,它包含很多信息,比如我试图获取的另一个表的主键。比如说,我做到了:

DECLARE @x VARCHAR(MAX)
SET @x= (SELECT  col_Definition
              FROM myTable
              WHERE col_ID = 1)
   --Function to do the filtering of the varchar variable that works as expected
   SELECT @x as [Pk of another table] --returns filtered col_Definition

这将按预期工作,因为它返回一行。但是,我希望能够运行此查询,以便它为myTable表中的每一行返回筛选的varchar。

您需要首先定义“uniqueIdentifier”是什么。 不确定是否使用子查询并获取结果并使用该结果执行另一个查询,除非执行某种内部联接,或者如果使用python或其他语言处理数据,则使用:

("SELECT someCol
          FROM table
          where id='%s'" % Id)

如果我理解正确的话,您将一个PK存储在一个字符串中,您希望最终获得该字符串并使用该字符串连接到该表。我会考虑将您想要处理的记录组放入一个临时表中,然后对varchar列应用一些逻辑来获得PK。该逻辑最好是基于集合的,但如果确实需要逐行执行,请使用标量函数而不是变量,并将其应用于临时表:

选择pk_列,dbo.scalarfunctionpk_列作为RowByRowWithFunction,子字符串pk_列,5,10作为setbasedMuchs
来自诱惑。

为什么需要将所有行放入一个变量中?为什么不使用临时表呢?我想把它放在变量中的唯一原因是为了能够过滤结果。someCol中的数据是一个相当长的varchar,它保存了另一个表的主键。所以我使用变量来过滤工作,然后显示过滤结果。这适用于单行,但我不知道如何处理多行。不过我会考虑使用临时表@韦尤博士