请有人帮忙,我试图在这样的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时,转换失败。
我将不胜感激任何帮助。感谢
答案 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