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

时间:2016-01-14 23:04:44

标签: tsql stored-procedures linqpad isnull

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

在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" jazz用于后续查询。什么语法无效,如何使其有效/修复?

更新

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

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

......但无济于事。

3 个答案:

答案 0 :(得分:1)

P

答案 1 :(得分:1)

这与NHItemCode ='X'的位置有什么关系。错误代码附近我找到了给你一个错误所在的一般区域。大多数时候,当我得到这个时,我有a)不合适,但NHItemCode ='X'看起来不合适。你能评论出那条线,看看会发生什么?解决这个问题的另一种方法是在没有is null且没有in子句的情况下启动。然后再次添加in子句,然后最后但最重要的是添加is null。

答案 2 :(得分:0)

以下工作,应该在您的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')