2

我正在尝试完成简单的任务:从表中的 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

帮助将不胜感激

4

2 回答 2

3

您需要将您选择的值存储到 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- 如果不是,请根据需要进行调整。

于 2013-09-18T08:19:33.030 回答
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
于 2013-09-18T08:38:09.650 回答