0
SELECT [schoolname] AS combinationschools, 
       CASE 
         WHEN [schoolname] LIKE '%/%' THEN (SELECT value 
                                            FROM 
         [dbo].[Split]('/', '#6/#9E/#9M')) 
       END          AS schoolname 
FROM   [dbo].[schools]; 

我很明智地收到了 q sql 错误-

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

4

3 回答 3

3

那是因为Select value from [dbo].Split返回的值不止一个。

于 2013-10-16T14:47:11.160 回答
1

当您使用这样的子查询时,每条记录在结果集中只能有一条记录。显然,您的表 Split 有不止一条记录。

使用联接而不是子查询。或者通过将其连接到子查询中的学校表来使其成为相关子查询,或者仅提取 Max 或 min 记录,或者在 thw 子查询中创建某种 where 子句以仅获取一条记录。如果没有看到表结构和数据,很难准确地确定要做什么。

于 2013-10-16T14:50:14.040 回答
0

我认为您的拆分函数将返回一个您无法在给定示例中单行捕获的表拆分函数将返回以下三行,该表无法在单行中捕获

#6
#9E
#9M 

我认为你应该错过在拆分函数中传递一些变量

请传递一些东西Select value from [dbo].Split

于 2013-10-16T14:47:29.243 回答