[英]Case expression issue with Null's
我正在羅斯文(Northwind)數據庫上進行培訓,但被困在案例陳述中,我將查詢放在下面,希望能為您提供幫助。
問題是我希望Shippeddate列中的記錄有一些文本,在這種情況下,當它上有NULL時我將其放置為'ddd',但NULL始終出現在結果集中。
SELECT OrderID,
CONVERT(VARCHAR(10), OrderDate, 103) AS OrderDate,
CONVERT(VARCHAR(10), RequiredDate, 103) AS RequiredDate,
CASE ShippedDate
WHEN NULL THEN 'ddd'
ELSE CONVERT(VARCHAR(10), ShippedDate, 103)
END AS ShippedDate
-- Why is this not working
,
[UnitPrice] AS UnitPriceOnOrder,
[Quantity] AS QuantityOnOrder,
[Discount] AS DiscountOnOrder,
CompanyName_II AS CustomerCompanyName,
ContactName_II AS CustomerContact,
ContactTitle_II AS CustomerContactTitle,
City_II AS CustomerCity,
Country_II AS CustomerCountry,
ProductName,
CategoryName,
[Description] AS CategoryDescription,
UnitsInStock,
UnitsOnOrder,
UnitsInStock - UnitsOnOrder AS AvailableUnitsInStock,
FirstName + ' ' + LastName AS EmployeeName
FROM ##NorthwindTestI
WHERE [Quantity] > 10
AND ShippedDate > '19970101'
OR [UnitPrice] > 10
OR Country_II = 'USA'
OR FirstName + ' ' + LastName = 'Janet Leverling'
ORDER BY
--[Quantity]
ShippedDate
嘗試使用ISNULL()
代替:
所以而不是
CASE ShippedDate
WHEN NULL THEN 'ddd'
ELSE CONVERT(VARCHAR(10), ShippedDate, 103)
END AS ShippedDate
采用:
ISNULL(CONVERT(VARCHAR(10),ShippedDate,103),'ddd')
因此您的查詢將類似於:
SELECT OrderID,
CONVERT(VARCHAR(10), OrderDate, 103) AS OrderDate,
CONVERT(VARCHAR(10), RequiredDate, 103) AS RequiredDate,
ISNULL(CONVERT(VARCHAR(10),ShippedDate,103),'ddd') AS ShippedDate
-- Why is this not working
,
[UnitPrice] AS UnitPriceOnOrder,
[Quantity] AS QuantityOnOrder,
[Discount] AS DiscountOnOrder,
CompanyName_II AS CustomerCompanyName,
ContactName_II AS CustomerContact,
ContactTitle_II AS CustomerContactTitle,
City_II AS CustomerCity,
Country_II AS CustomerCountry,
ProductName,
CategoryName,
[Description] AS CategoryDescription,
UnitsInStock,
UnitsOnOrder,
UnitsInStock - UnitsOnOrder AS AvailableUnitsInStock,
FirstName + ' ' + LastName AS EmployeeName
FROM ##NorthwindTestI
WHERE [Quantity] > 10
AND ShippedDate > '19970101'
OR [UnitPrice] > 10
OR Country_II = 'USA'
OR FirstName + ' ' + LastName = 'Janet Leverling'
ORDER BY
--[Quantity]
ShippedDate
使用WHEN ShippedDate IS NULL
代替CASE ShippedDate WHEN NULL
:
SELECT .....,
CASE WHEN ShippedDate IS NULL
THEN 'ddd'
ELSE CONVERT(VARCHAR(10), ShippedDate, 103)
END AS ShippedDate
.....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.