Declare @CategoryID as int
BEGIN
SELECT
(CASE
WHEN EXISTS(
SELECT t0.Categoryid AS [EMPTY]
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName
) THEN 1
ELSE 0
END) AS [value]
t0.Categoryidで存在するブロック内に変数を設定したい場合、どうすればいいですか?
私が欲しいのはthen 1をcategory id value ...に置き換えることです
前もって感謝します..
Declare @CategoryID as int
SET @CategoryID = CASE WHEN EXISTS(SELECT 1
FROM Categories
WHERE Categoryname = @CategoryName)
THEN 1 ELSE 0
END
別の方法は...のようなものになります.
IF EXISTS (SELECT 1
FROM Categories
WHERE Categoryname = @CategoryName)
BEGIN
SET @CategoryID = 1;
END
ELSE
BEGIN
SET @CategoryID = 0;
END
これは、カテゴリIDが存在する場合はカテゴリIDを返し、存在しない場合は0を返します。
SET @CategoryID = null;
SELECT @CategoryID = t0.Categoryid
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName;
IF @CategoryID IS NULL
SET @CategoryID = 0;
SELECT @CategoryID AS [value];
ただし、存在しない場合はnullを返すか、存在するかどうかを示す追加の@Exists(BIT)を返すことをお勧めします。
私の2セント...
DECLARE @any BIT = 0
SELECT TOP 1 @any = 1 FROM Categories WHERE CategoryName = @CategoryName
IF (@any = 1)
PRINT 'Yes'
ELSE
PRINT 'No'
ヨはこのように試すことができます。
Declare @CategoryID as int
Set @CategoryID =0;
SELECT @CategoryID=t0.Categoryid
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName
カテゴリー名が存在する場合、そのカテゴリーのカテゴリーIDを割り当てる場合よりも、存在しない場合はゼロのままです。
Declare @CategoryID as int
SET @CategoryID =
(SELECT t0.Categoryid AS [EMPTY]
FROM Categories AS [t0]
WHERE [t0].Categoryname = @CategoryName)
SET @CategoryID =COALESCE(@CategoryID ,0)