SQL Server 2005:如果语句带有返回值

时间:2013-09-18 08:15:26

标签: sql-server-2005

我正在尝试实现简单的任务:从表格中的2列中选择值。

如果其中一个值为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

帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

您需要将您选择的值存储到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 - 如果没有,请改编为需要的。

答案 1 :(得分:0)

根据你对我的评论,这就是你要找的东西:

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