2016-08-28 11 views
0

私は部門名が存在するかどうかを知りたい特定の部門名の行から今取り出す変数@departmentに部門名を格納していますdepartmentsテーブルは、ユーザが入力した部門名が有効な部門かどうか。これを行う方法?このクエリをブール式にするにはどうすればよいですか?SQL Server 2012のIF-ELSEコントロールステートメントでSQLクエリが正常に実行されたかどうかを確認する方法はありますか?

create table dbo.departments 
(
    department_id int primary key; 
    department_name varchar(255); 
) 

if(select @finaldepartment_id = department_id 
    from dbo.departments 
    where department_name like @department) 
    set @department_flag = 1; 
else 
    set @department_flag = 0; 
+0

を簡素化することができます。別のクエリで使用する場合、私は別のアプローチを使用します。あなたがプログラム(SPまたはC#jのためにそれを使用している場合、私はストアドプロシージャまたは関数を使用するかもしれません。 –

答えて

2

それは本当にあなたが結果を使用する方法によって異なり、単一のクエリに

SET @department_flag = CASE 
         WHEN EXISTS (SELECT 1 
             FROM dbo.departments 
             WHERE department_name LIKE Concat('%',@department,'%')) THEN 1 
         ELSE 0 
         END 
+0

ケースを使用することは最適なアプローチだと思われますが、OUTPUTをスローします: THEN '。 –

+1

@SiddharthBhardwaj - ええ、タイポが修正されました。 –

1

あなたは、変数に部署からIDを割り当てた結果で変数を設定しているかどうかをチェックする必要がある場合はEXISTS

IF EXISTS (
    select 1 
    from dbo.departments 
    where department_name like '%'[email protected]+'%' 
) 

あなたの条件での使用に一致するすべての部門があるかどうかを確認するにはそれはnullではありません。

+0

それは魅力のように働くおかげです –

関連する問題