如下语句,应该是没问题的
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
如果改成以下语句,红色部分是更改的,即else后面取的是表中的一个字段,请问是否符合SQL标准呢?这样写有没有什么问题呢?
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE productlineentry
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
------解决思路----------------------
'Road'、'Mountain'都是varchar(n),保证productlineentry也是varchar(m)就肯定没问题。
用其他类型不一定错,但最好是显式转换成相同的类型。