Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无效的SQL查询-指定了非布尔类型_Sql Server - Fatal编程技术网

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

Sql server 无效的SQL查询-指定了非布尔类型,sql-server,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 con

我不是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'.

我做错了什么?这一定是句法上的。我一直盯着它看,但每一个符号在我看来都是正确的。谢谢。

从语法上讲,您的
内部连接应该位于
WHERE
语句之前,此外,这里不需要
WHERE
语句

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

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

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

查看SQL Server SELECT语法:


您应该在WHERE子句之前加入。如果您希望查询得到更多帮助,请澄清您希望它做什么

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

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

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

什么是
convertidleisttotable
?它返回什么?一个包含一列名为“item”的表。在上面的示例中,返回4条记录。记录1:1、记录2:2、记录3:3和记录4:4。函数是否返回INT表或字符串表?ID是整数还是字符串?