此 TSQL 中逗号附近的无效语法在哪里



我没有从查询中得到结果。起初我认为这只是一个糟糕的查询 - 不应返回任何数据,但现在看来可能是导致问题的语法错误。

在 Visual Studio 的服务器资源管理器中运行存储过程(查询是其一部分)时,我从第一个查询中获取数据,但此查询(更新)不返回任何数据(没有错误消息,但也没有数据)。然而,当我尝试在 LINQPad 中只运行存储过程的这一部分时,各地的编码人员都声称它发现了非常可怕的"错误 102:'","附近的语法不正确"。

它指向这一行:

and ItemCode in (Select ItemCode from UnitProducts where Unit='BIG RED ONE')),'X')

。(唯一带有","的行),但我看不出问题是什么。我也尝试了这个主题的变体:

and ItemCode in (Select ItemCode from UnitProducts where Unit='BIG RED ONE'),'X'))

。但是错误的味精是一样的。

以下是我在 LINQPad 中尝试的整个查询:

isnull((Select top 1 ItemCode 
From PlatypusUnitMapping 
where Unit='BIG RED ONE' 
and MemberNo='42' 
and MemberItemCode= '314IMPie'
and ItemCode in (Select ItemCode from UnitProducts where Unit='BIG RED ONE')),'X')

那么这有什么问题呢?查询的简单版本有效:

Select top 1 ItemCode 
From PlatypusUnitMapping 
where Unit='BIG RED ONE' 
and MemberNo='42' 
and MemberItemCode= '314IMPie' 
and ItemCode in 
(Select ItemCode from UnitProducts where Unit='BIG RED ONE')

。但我需要"isNull"爵士乐进行后续查询。什么语法无效,如何使其有效/修复?

更新

根据 NMM 的推动,我也尝试了这个:

and (ItemCode in (Select ItemCode from UnitProducts where Unit='BIG RED ONE'))),'X')

。但无济于事。

and (ItemCode in (Select ItemCode from UnitProducts where Unit='BIG RED ONE') 
OR ItemCode = 'X')

这与NHItemCode='X'有什么关系。 错误代码在附近,我发现为您提供错误所在位置的一般区域。 大多数时候,当我得到这个时,我有一个)不合适,但NHItemCode='X'看起来不合适。 你能注释掉那行,看看会发生什么吗? 解决此问题的另一种方法是在没有 is null 和 in 子句的情况下启动。 然后再次添加 in 子句运行,然后最后但并非最不重要的是添加 is null。

以下工作,应该在你的 SQL Server 上运行...与您的查询进行比较,看看缺少什么:

SELECT 
    ISNULL((
        SELECT TOP 1
          TABLE_CATALOG
        FROM
            INFORMATION_SCHEMA.COLUMNS
        WHERE
            TABLE_SCHEMA='dbo' AND
            COLUMN_DEFAULT IS NULL AND
            IS_NULLABLE='NO' AND
            DATA_TYPE IN (SELECT DISTINCT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE<>'numeric')
    ),'NONE')

相关内容

  • 没有找到相关文章

最新更新