別の列がヌルであるかどうかを返し計算ビット列
-
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