Sql server 2005 SQL Server 2005:返回值为的If语句

Sql server 2005 SQL Server 2005:返回值为的If语句,sql-server-2005,Sql Server 2005,我试图实现一个简单的任务:从表中的两列中选择值 如果其中一个值为null,则返回null或其他值 否则返回值 SELECT MobileAreaCode, Mobile FROM TABLE_NAME WHERE id = 123456789 IF (MobileAreaCode is NULL OR Mobile is NULL) BEGIN RETURN(1)--NULL END ELSE BEGIN RETURN(MobileAreaCode+

我试图实现一个简单的任务:从表中的两列中选择值

如果其中一个值为null,则返回null或其他值

否则返回值

SELECT 
    MobileAreaCode, Mobile 
FROM 
    TABLE_NAME
WHERE 
    id = 123456789

IF (MobileAreaCode is NULL OR Mobile is NULL)
BEGIN
   RETURN(1)--NULL
END
ELSE
BEGIN
   RETURN(MobileAreaCode+Mobile)
END

非常感谢您的帮助

您需要将选择的值存储到SQL Server变量中,以便稍后检查:

DECLARE @MobileAreaCode INT
DECLARE @Mobile INT

SELECT 
    @MobileAreaCode = MobileAreaCode, 
    @Mobile = Mobile 
FROM 
    TABLE_NAME
WHERE 
    id = 123456789

IF (@MobileAreaCode IS NULL OR @Mobile IS NULL)
BEGIN
   RETURN NULL
END
ELSE
BEGIN
   RETURN @MobileAreaCode + @Mobile
END

我不知道您的列是什么数据类型(您在问题中没有提到),所以我只是假设它们是
INT
——如果不是,根据需要进行调整。

根据您对我的评论,这就是您要找的:

ALTER PROCEDURE PRO_NAME (Identification INT)
AS SELECT
CASE WHEN CONVERT(MobileAreaCode, int)>1 OR
CONVERT(Mobile, int)>1 THEN MobileAreaCode+Mobile
End FROM TABLE_NAME WHERE Hp=(Identification)
GO
旧想法/信息。。 试试这个

SET NOCOUNT ON
SELECT 
CASE WHEN MobileAreaCode is NOT NULL OR Mobile is NOT NULL THEN
MobileAreaCode+Mobile
END
FROM 
    TABLE_NAME
WHERE 
    id = 123456789
另一种方式

SET NOCOUNT ON
SELECT 
CASE WHEN CONVERT(MobileAreaCode, int)>1 OR CONVERT(Mobile, int)>1 THEN MobileAreaCode+Mobile End 
END
FROM 
TABLE_NAME
WHERE 
id = 123456789
使用ISNULL

SET NOCOUNT ON
SELECT 
CASE WHEN NOT ISNULL(MobileAreaCode, 000) OR NOT ISNULL(Mobile, 000) THEN MobileAreaCode+Mobile End 
END
FROM 
TABLE_NAME
WHERE 
id = 123456789

它对我不起作用我在列中得到某个数字的返回值,即使另一列的值为null抱歉,我的错误-某些值为空且不为null它起作用-但它返回0且不为null抱歉现在提出它,如果我想添加对空字符串的支持,请不要只添加MobileAreacCode“”或MobileAreacCode和MobileArCharMobileArCode以及MobileArCharMobileArCode和MobileArCharyMobileArCode。您还可以利用以下功能:使用ISNULL。但是,需要让您知道ISNULL与IS NULL之间的区别。。读到页面底部。我之前的评论不正确。。如果mobile和mobileAreacode是数字。。隐马尔可夫模型。。当CONVERT(MobileAreaCode,int)>1或CONVERT(Mobile,int)>1时,则为MobileAreaCode+Mobile End