如何检查SQL Server 2012中的IF-ELSE控制语句中的SQL查询是否已成功执行?
我将部门名称存储在变量如何检查SQL Server 2012中的IF-ELSE控制语句中的SQL查询是否已成功执行?,sql,sql-server,database,Sql,Sql Server,Database,我将部门名称存储在变量@department中,我现在将从一行中获取该特定部门名称。我想知道departments表中是否存在部门id意味着用户输入的部门名称是否有效。如何做到这一点?如何将此查询转换为布尔表达式 create table dbo.departments ( department_id int primary key; department_name varchar(255); ) if(select @finaldepartment_id = departme
@department
中,我现在将从一行中获取该特定部门名称。我想知道departments
表中是否存在部门id意味着用户输入的部门名称是否有效。如何做到这一点?如何将此查询转换为布尔表达式
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;
要检查是否有任何部门符合您的条件,请使用
EXISTS
IF EXISTS (
select 1
from dbo.departments
where department_name like '%'+@department+'%'
)
如果需要将部门id分配到变量中,请使用结果设置变量,然后检查该变量是否为空。若要检查是否有任何部门符合您的条件,请使用
存在
IF EXISTS (
select 1
from dbo.departments
where department_name like '%'+@department+'%'
)
如果需要将部门id分配到变量中,请使用结果设置变量,然后检查该变量是否为空。可以简化为单个查询
SET @department_flag = CASE
WHEN EXISTS (SELECT 1
FROM dbo.departments
WHERE department_name LIKE Concat('%',@department,'%')) THEN 1
ELSE 0
END
它可以简化为单个查询
SET @department_flag = CASE
WHEN EXISTS (SELECT 1
FROM dbo.departments
WHERE department_name LIKE Concat('%',@department,'%')) THEN 1
ELSE 0
END
这实际上取决于你想如何使用结果。如果在另一个查询中使用,我将使用不同的方法。如果在程序(SP或c#j)中使用它,我可能会使用存储过程或函数。这实际上取决于您希望如何使用结果。如果在另一个查询中使用,我将使用不同的方法。如果在程序中使用它(SP或c#j我可能会使用存储过程或函数。使用case似乎是最佳方法,但它会抛出输出:关键字“THEN”附近的语法不正确。@SiddharthBhardwaj-是的,有一个拼写错误修复了它。使用case似乎是最佳方法,但它会抛出输出:关键字“THEN”附近的语法不正确。@SiddharthBhardwaj-是的,有一个打字错误修正了它。