web-dev-qa-db-ja.com

存在条件SQLサーバーに変数値を設定

 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 1category id value ...に置き換えることです

前もって感謝します..

16
Vishal Sharma
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
26
M.Ali

これは、カテゴリ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)を返すことをお勧めします。

6
Reuben

私の2セント...

DECLARE @any BIT = 0
SELECT TOP 1 @any = 1 FROM Categories WHERE CategoryName = @CategoryName

IF (@any = 1)
  PRINT 'Yes'
ELSE
  PRINT 'No'
4

ヨはこのように試すことができます。

Declare @CategoryID as int
 Set @CategoryID =0;
    SELECT @CategoryID=t0.Categoryid
    FROM Categories AS [t0]
    WHERE [t0].Categoryname = @CategoryName

カテゴリー名が存在する場合、そのカテゴリーのカテゴリーIDを割り当てる場合よりも、存在しない場合はゼロのままです。

2
Amit Singh
Declare @CategoryID as int
SET @CategoryID =
            (SELECT t0.Categoryid AS [EMPTY]
            FROM Categories AS [t0]
            WHERE [t0].Categoryname = @CategoryName)
SET @CategoryID =COALESCE(@CategoryID ,0)
2
Madhivanan