此 SQL 中逗号附近的无效语法在哪里?
Where is the Invalid syntax near the comma in this TSQL?
我没有从查询中得到返回结果。起初我认为这只是一个错误的查询 - 没有数据 应该 被 returned,但现在看来它可能是导致问题的语法错误。
当 运行 在 Visual Studio 的服务器资源管理器中调用存储过程(查询是其中的一部分)时,我从第一个查询中获取数据,但是这个(更新) 没有 return 任何数据(没有错误消息,但也没有数据)。然而,当我尝试 运行 只是 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 用于后续查询。什么语法是无效的,我怎样才能使它成为valid/fix呢?
更新
根据 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')
以下有效,并且应该 运行 在您的 SQL 服务器上...与您的查询进行比较,看看缺少什么:
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')
这与 Where NHItemCode='X' 有什么关系?错误代码就在我发现附近,为您提供了错误所在的一般区域。大多数时候,当我得到这个时,我有一个 ) 不合适但是 NHItemCode='X' 看起来不合适。你能注释掉那一行,看看会发生什么吗?解决此问题的另一种方法是在没有 is null 且没有 in 子句的情况下开始。然后再次添加 in 子句 运行 最后但并非最不重要的是添加 is null around.
我没有从查询中得到返回结果。起初我认为这只是一个错误的查询 - 没有数据 应该 被 returned,但现在看来它可能是导致问题的语法错误。
当 运行 在 Visual Studio 的服务器资源管理器中调用存储过程(查询是其中的一部分)时,我从第一个查询中获取数据,但是这个(更新) 没有 return 任何数据(没有错误消息,但也没有数据)。然而,当我尝试 运行 只是 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 用于后续查询。什么语法是无效的,我怎样才能使它成为valid/fix呢?
更新
根据 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')
以下有效,并且应该 运行 在您的 SQL 服务器上...与您的查询进行比较,看看缺少什么:
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')
这与 Where NHItemCode='X' 有什么关系?错误代码就在我发现附近,为您提供了错误所在的一般区域。大多数时候,当我得到这个时,我有一个 ) 不合适但是 NHItemCode='X' 看起来不合适。你能注释掉那一行,看看会发生什么吗?解决此问题的另一种方法是在没有 is null 且没有 in 子句的情况下开始。然后再次添加 in 子句 运行 最后但并非最不重要的是添加 is null around.