【问题标题】:Working with IF/ELSE and inserting into temp tables使用 IF/ELSE 并插入临时表
【发布时间】:2015-11-30 22:33:18
【问题描述】:

我正在尝试编写一个接受两个输入(内容 ID 和内容类型)的 SQL 查询,根据用户设置为内容类型的内容从不同的源表填充临时表,然后最终运行查询针对临时表。我想我无法将我的临时表合并到我的 IF/ELSE 语句中。

所以我的问题是,为什么这会返回一些非零的结果:

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

而这会返回零结果:

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

另外,我试过这个,它也返回零结果:

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 和 this,但由于某种原因,它只是不适合我。我正在使用 MS SQL Server 2014,以防万一。这是SQL Fiddle。谢谢!

【问题讨论】:

    标签: sql sql-server tsql temp-tables


    【解决方案1】:

    这实际上很简单,您没有给@contenttype 指定长度,因此默认情况下它的长度为1 个字符。

    如果你这样做会很清楚:

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

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

    【讨论】:

    • 谢谢 - 这就是答案。我现在接受它作为答案还为时过早(不能在 10 分钟内接受答案),但我会回来做的。
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多