计算出的比特列返回另一列是否为空
-
13-09-2019 - |
题
我尝试有此计算列:
CREATE TABLE dbo.Item
(
ItemId int NOT NULL IDENTITY (1, 1),
SpecialItemId int NULL,
--I tried this
IsSpecialItem AS ISNULL(SpecialItemId, 0) > 0,
--I tried this
IsSpecialItem AS SpecialItemId IS NOT NULL
--Both don't work
) ON [PRIMARY]
解决方案
此工作的:
CREATE TABLE dbo.Item
(
ItemId int NOT NULL IDENTITY (1, 1),
SpecialItemId int NULL,
IsSpecialItem AS
CAST(CASE ISNULL(SpecialItemId, 0) WHEN 0 THEN 0 ELSE 1 END AS bit)
)
其他提示
马克拜尔的回答导致错误与nvarchar
列,下面的作品不管列是否是int
或nvarchar
:
CREATE TABLE dbo.Item
(
ItemId int NOT NULL IDENTITY (1, 1),
SpecialItemId [nvarchar](50) NULL,
CAST(CASE WHEN SpecialItemId Is NULL THEN 0 ELSE 1 END AS bit)
AS IsSpecialItem
)
SQL Server没有(因为你可以代替布尔表达式中使用变量,像select * from Item where IsSpecialItem
的意义上)的任何原生真布尔数据类型。你可以代表它的唯一方法是使用像马克建议,使用保留的值(在这种情况下,您的查询将被select * from Item where IsSpecialItem = 1
)。
不隶属于 StackOverflow