日期:2014-05-18  浏览次数:20620 次

SELECT 语法错误,
有一表 MaterialType 由以下列组成:
MaterialTypeID int not null 标识列;
Name NVarChar(50) not null 名称列;
Type NChar(1) not null 区分列;

想使用以下语句查询:
SELECT MaterialTypeID, [Name], 
IsShe = (UPPER([Type]) = N'S'), -- 打算获得一个 bit 列表示是否为 she 。
IsBare = (UPPER([Type]) = N'B') -- 打算获得一个 bit 列表示是否为 bare 。
FROM MaterialType


但报语法错:
消息 102,级别 15,状态 1,第 2 行
'=' 附近有语法错误。


不明白为什么错?用 CASE 语句倒是可以实现:
(CASE UPPER([CutType])
WHEN N'S' THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) END)

但相当别扭。难道简洁的方式没有吗?

------解决方案--------------------
SELECT MaterialTypeID, [Name],
IsShe = case when UPPER(Type) = 'S' then 1 else 0 end,
IsBare = case when UPPER(Type) = 'B' then 1 else 0 end 
FROM MaterialType