where子句中的case查询失败

时间:2014-02-28 17:58:54

标签: sql-server

请有人帮忙,我试图在这样的where子句中做一个案例陈述---请看下面的查询

    SELECT  pisca ,
            dropbox
    FROM    Images
    WHERE   pisca = 'A'
            AND dropbox = CASE WHEN dropbox = 1 THEN 'Small'
                               WHEN dropbox = 2 THEN 'Medium'
                               WHEN dropbox = 3
                                    OR dropbox = 4 THEN 'Large'
                          END

但是我收到以下错误消息

Msg 245,Level 16,State 1,Line 2 将varchar值'North'转换为数据类型int时,转换失败。

我将不胜感激任何帮助。感谢

3 个答案:

答案 0 :(得分:1)

我想你想要这个:

SELECT 
pisca ,
CASE dropbox 
    WHEN 1 THEN 'Small'
    WHEN 2 THEN 'Medium'
    WHEN 3 OR 4 THEN 'Large'
END dropbox
FROM  Images
WHERE pisca = 'A'

答案 1 :(得分:0)

如果您想按名称过滤掉落框,请像'小'一样尝试这样的事情:

SELECT
    I.pisca
,   D.DROPBOX
FROM Images I
INNER JOIN (
    SELECT 1 AS ID, 'Small' AS DROPBOX
    UNION
    SELECT 2 AS ID, 'Medium' AS DROPBOX
    UNION
    SELECT 3 AS ID, 'Large' AS DROPBOX
    UNION
    SELECT 4 AS ID, 'Large' AS DROPBOX
) D
    ON I.dropbox = D.ID
WHERE 
    I.pisca = 'A'
    AND D.DROPBOX = 'Small'

答案 2 :(得分:-1)

正如我所提到的,检查数据类型,如果Dropbox是字符串或int,并根据它使用其中的一个。

如果是INT类型

    SELECT  pisca ,
            dropbox
    FROM    Images
    WHERE   pisca = 'A'
            AND dropbox = CASE dropbox
                                WHEN 1 
                                    THEN 'Small'
                                WHEN 2 
                                    THEN 'Medium'
                                WHEN 3 
                                    THEN 'Large'
                                WHEN 4 
                                    THEN 'Large'
                          END

如果是String

类型
    SELECT  pisca ,
            dropbox
    FROM    Images
    WHERE   pisca = 'A'
            AND dropbox = CASE dropbox
                                WHEN '1' 
                                    THEN 'Small'
                                WHEN '2' 
                                    THEN 'Medium'
                                WHEN '3' 
                                    THEN 'Large'
                                WHEN '4' 
                                    THEN 'Large'
                          END
相关问题