Sql 列的IF语句

Sql 列的IF语句,sql,function,if-statement,compare,case,Sql,Function,If Statement,Compare,Case,我需要验证如下列: CREATE FUNCTION [dbo].[VALIDATE_GENDER]() RETURNS BIT AS BEGIN DECLARE @FLAG BIT /* IF ID_gender = 1 AND name_gender = 'Female' OR ID_gender = 2 AND name_gender = 'Male' THEN SET @FLAG = 1 ELSE SET @FLAG =

我需要验证如下列:

CREATE FUNCTION [dbo].[VALIDATE_GENDER]()
RETURNS BIT
AS
BEGIN
    DECLARE @FLAG BIT
    /* IF ID_gender = 1 AND name_gender = 'Female' OR ID_gender = 2 AND
       name_gender = 'Male' THEN SET @FLAG = 1 
       ELSE
           SET @FLAG = 0 */
    RETURN @FLAG
END
GO
我试过用CASE,但没用:

CREATE FUNCTION [dbo].[VALIDATE_GENDER]()
RETURNS BIT
AS
BEGIN
    DECLARE @FLAG BIT
    SELECT @FLAG = CASE WHEN (ID_gender = 1 AND name_gender = 'Female' 
    OR ID_gender = 2 AND name_gender = 'Male') THEN 1
    ELSE 0 END FROM GENDER
    RETURN @FLAG
END
GO

拜托,有人能帮我吗?谢谢。

您遇到了什么样的错误?您正在将标量值设置为select语句中列的值。标志将包含select语句中最后一行的值。您没有进行任何筛选或定义顺序,因此无法知道变量中的行值。你真的有一个名为Gender的表,它有两行以上吗?@CJ列和表名不可识别。回答你的问题非常困难,因为我不知道你到底需要什么。问题不在于案例,而更可能在于语法和逻辑。除此之外,正如肖恩所说,您的查询可能返回不止一行,而select@variable将只取最后一行的值,我很确定这不是您想要的。@C.J.谢谢。我想要的是,如果ID=1且name_gender='Female'或ID=2且name_gender='Male',则函数返回true,如果不满足这些语句,则返回false。我想我会试试别的。。。也许是个扳机。