jra*_*ara 18 sql sql-server calculated-columns
当您CREATE TABLE使用CASE表达式创建一个计算列,你不明确定义此列的数据类型:
CREATE TABLE OrderDetail
( OrderID INT
, ProductID INT
, Qty INT
, OrderDate DATETIME
, ShipDate DATETIME
, STATUS AS CASE
WHEN shipdate is NULL AND orderdate < DATEADD( dd, -7, GETDATE()) THEN 3
WHEN shipdate is NOT NULL THEN 2
ELSE 1
end
)
GO
Run Code Online (Sandbox Code Playgroud)
SQL Server如何决定此列的数据类型?
Aar*_*and 23
此外,如果要强制使用特定数据类型而不是依赖于数据类型优先级,则可以使用CONVERT或CAST在计算中强制它(假设所有可能的结果与您选择的类型兼容).如果默认情况下您的数据类型比预期的更宽,则这非常有用; 我见过的最常见的用例是当你最终使用INT而不是BIT:
Active1 AS CASE WHEN something THEN 1 ELSE 0 END,
Active2 AS CONVERT(BIT, CASE WHEN something THEN 1 ELSE 0 END)
Run Code Online (Sandbox Code Playgroud)
在这种情况下Active1是INT(4字节)while Active2是BIT(1字节 - 或更少,如果它与其他BIT列相邻,则可能).
| 归档时间: |
|
| 查看次数: |
13716 次 |
| 最近记录: |