使用 IF/ELSE 并插入临时表

Working with IF/ELSE and inserting into temp tables

我正在尝试编写一个 SQL 查询,它接受两个输入(一个内容 ID 和一个内容类型),根据不同的来源 table 填充一个临时文件 table基于用户设置的内容类型,然后最终针对临时 table 运行查询。我想我在将我的临时 table 合并到我的 IF/ELSE 语句中遇到了困难。

所以我的问题是,为什么 return 一些非零数量的结果:

DECLARE @contentID int, @contenttype varchar
SET @contentid = 28861
SET @contenttype = 'resource'

DECLARE @tags_current TABLE (contentID int, taxonomyID int, isPrimary int)

INSERT INTO @tags_current (contentID, taxonomyID, isPrimary)
SELECT resourceID as contentID, taxonomyID, isPrimary
FROM resource2taxonomy r2t
WHERE r2t.resourceID = @contentID

SELECT * FROM @tags_current

而这个 return 的结果为零:

DECLARE @contentID int, @contenttype varchar
SET @contentid = 28861
SET @contenttype = 'resource'

DECLARE @tags_current TABLE (contentID int, taxonomyID int, isPrimary int)

IF (@contenttype = 'resource')
BEGIN
    INSERT INTO @tags_current (contentID, taxonomyID, isPrimary)
    SELECT resourceID as contentID, taxonomyID, isPrimary
    FROM resource2taxonomy r2t
    WHERE r2t.resourceID = @contentID
END

SELECT * FROM @tags_current

另外,我已经试过了,它也是 return 零结果:

DECLARE @contentID int, @contenttype varchar, @command varchar
SET @contentid = 28861
SET @contenttype = 'resource'

DECLARE @tags_current TABLE (contentID int, taxonomyID int, isPrimary int)

IF (@contenttype = 'resource')
BEGIN
    SET @command = 'INTO @tags_current (contentID, taxonomyID, isPrimary) SELECT resourceID as contentID, taxonomyID, isPrimary FROM resource2taxonomy r2t WHERE r2t.resourceID = @contentID'
END

EXECUTE(@command)
SELECT * FROM @tags_current

我已阅读 this, this, and this, but for some reason it's just not clicking for me. I'm using MS SQL Server 2014, in case that helps. Here's the SQL Fiddle。谢谢!

这其实很简单,你没有给 @contenttype 一个长度,因此,默认情况下它的长度是 1 个字符。

如果你这样做就会很清楚:

DECLARE @contentID int, @contenttype varchar
SET @contentid = 28861
SET @contenttype = 'resource'
SELECT @contenttype 

结果是r,所以,IF (@contenttype = 'resource')不成立