有一表 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