SQL 参数数据类型 int 对于 charindex 函数的参数 1 无效

Chi*_*nnu 5 php mysql sql sql-server

我正在尝试将 MySQL 查询转换为 MsSql 查询,但遇到了问题。这是我的查询:

MySQL

SELECT *,
(SELECT count(books.id)
   FROM books
   WHERE books.status = 1
     AND FIND_IN_SET(categories.id, books.multiple_category_id)) AS book_count
   FROM categories, books
   WHERE categories.parent_id=0
     AND categories.status=1 ;
Run Code Online (Sandbox Code Playgroud)

我试过的 SQL

SELECT *,
  (SELECT count(books.id)
   FROM books
   WHERE books.status = 1
     AND CHARINDEX(categories.id, books.multiple_category_id) > 0) AS book_count
   FROM categories, books
   WHERE categories.parent_id=0
     AND categories.status=1 ;
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Argument data type int is invalid for argument 1 of charindex function.
Run Code Online (Sandbox Code Playgroud)

以供参考。 http://sqlfiddle.com/#!3/4ed19/3

有没有人有任何想法?提前致谢!

Md *_*man 4

使用此查询。我刚刚更改categories.idCAST(categories.id AS VARCHAR). 因为id在表integercategories

SELECT *,
(SELECT count(books.id)
   FROM books
   WHERE books.status = 1
     AND CHARINDEX(CAST(categories.id AS VARCHAR), books.multiple_category_id) > 0) AS book_count
FROM categories,
     books
WHERE categories.parent_id=0
  AND categories.status=1 ;
Run Code Online (Sandbox Code Playgroud)