我正在尝试查询,但出现转换错误
SELECT
BANNER =
CASE LEFT(PERSONNUM, 2)
WHEN 01 THEN 'HANNAFORD'
WHEN 02 THEN 'INDEPENDENT'
WHEN 03 THEN 'SWEETBAY'
END
FROM VP_ALLPERSONV42 vp
GROUP BY vp.PERSONNUM
答案 0 :(得分:0)
请确保您的LEFT(PERSONNUM)使用CAST OR CONVERT 函数来赋予数值:
CAST(LEFT(PERSONNUM, 2) AS INT)
OR:
CONVERT(LEFT(PERSONNUM, 2), '888')
答案 1 :(得分:0)
在黑暗中完全刺破,但是您可以 使用CHARINDEX
来查看.
是否为第二个字符,然后仅返回第一个:
SELECT CASE LEFT(PERSONNUM, CASE CHARINDEX('.',PERSONNUM) WHEN 1 THEN 1 ELSE 2 END)
WHEN 1 THEN 'HANNAFORD'
WHEN 2 THEN 'INDEPENDENT'
WHEN 3 THEN 'SWEETBAY'
END AS BANNER
FROM VP_ALLPERSONV42 vp
GROUP BY vp.PERSONNUM;
返回前2个字符似乎很奇怪,但是,当您检查的值为1
,2
和3
时;没有两个字符。
答案 2 :(得分:-1)
SELECT
BANNER =
CASE
WHEN LEFT(PERSONNUM, 2) ='01' THEN 'HANNAFORD'
WHEN LEFT(PERSONNUM, 2) ='02' THEN 'INDEPENDENT'
WHEN LEFT(PERSONNUM, 2) ='03' THEN 'SWEETBAY'
END
FROM VP_ALLPERSONV42 vp