首页 文章

SQL错误:子查询返回的值超过1

提问于
浏览
0

我有一个存储过程,它执行下面的SQL . 这给了我运行时错误:'子查询返回的值超过1 . 当子查询遵循=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做 . 我知道我的子查询返回的值超过1,但我很难找到解决方法 . 基本上我正在尝试选择没有4个或更多连续字符的所有公司名称 . 请帮忙 .

select @flag = 1 from [dbo].[Country] where 1 =( SELECT 1
FROM tabC c
WHERE NOT EXISTS (SELECT 1
              FROM (SELECT REPLICATE(CHAR(32 + N), 4) AS val
                    FROM (select top 95 row_number() over(order by t1.number) as N
                          from master..spt_values t1)  AS s) mul
              WHERE CHARINDEX(mul.val,c.CompanyName) > 0))

2 回答

  • 0

    只是使用聚合?

    select MAX(1) from ...
    

    或不同的;

    select distinct 1 from ...
    

    确保只返回一行

  • 0
    DECLARE @flag INT
    
    select @flag = CASE WHEN NOT EXISTS (
                    SELECT 1
                    FROM (
                        select top 95 REPLICATE(CHAR(33 + t1.number), 4) as val
                        from master..spt_values t1
                        where t1.type = 'P'
                    ) mul
                    WHERE CHARINDEX(mul.val, c.CompanyName) > 0) THEN 1
                    END
    SELECT @Flag
    

相关问题