无效的SQL查询 - 指定了非布尔类型

时间:2013-02-07 15:53:20

标签: sql-server

我不是SQL Server专家。我正在尝试执行查询。该查询依赖于拆分CSV并在表上进行连接的功能。它是一个非常基本的查询,如下所示:

SELECT 
  *
FROM
 [Order]
WHERE
 dbo.ConvertIDListToTable('1,2,3,4', ',') l INNER JOIN Order o ON l.item=o.ID

当我执行查询时,出现以下错误:

An expression of non-boolean type specified in a context where a condition is expected, near 'l'.

我做错了什么?这必须是句法上的东西。我一直盯着它,但每一个看起来都对我不对。谢谢。

3 个答案:

答案 0 :(得分:1)

从语法上讲,您的INNER JOIN应该在WHERE语句之前,此外,您不需要WHERE语句。

不知道ConvertIDListToTable的确切代码是一个障碍,但假设它返回一个表,我认为你需要:

SELECT *
FROM dbo.ConvertIDListToTable('1,2,3,4', ',') l 
INNER JOIN Order o ON l.item=o.ID

答案 1 :(得分:0)

您不能在WHERE子句中使用JOIN。这确实是一个语法问题。

查看SQL Server SELECT语法:http://msdn.microsoft.com/en-us/library/ms189499.aspx

您应该在WHERE子句之前加入。如果您想要更多的查询帮助,请说明您希望它做什么。

答案 2 :(得分:0)

我相信这个查询结构来自mysql

在SQL Server中,您可以这样写:

SELECT 
  *
FROM
 [Order] o 
 Inner join dbo.ConvertIDListToTable('1,2,3,4', ',') l
   ON l.item=o.ID