如果电话号码为空或0,则移动号码,如果移动号码也为0或空,则在SQL中为0

时间:2013-03-26 07:45:36

标签: sql sql-server sql-server-2008

帮帮我PLZ

如果电话号码为空或0,我想得到,然后选择手机号码,如果手机号码也是0或空,则选择0

DECLARE 
    @phoneNumber varchar(MAX),
    @nReservationID varchar(MAX)


SELECT 
    @phoneNumber = 
       (CASE 
             WHEN ISNULL(RDG.nPhoneNumber  ,'') IN ('0','-',NULL)  
             THEN ISNULL(RDG.nMobileNumber, '0')  
             WHEN ISNULL(RDG.nMobileNumber, '0')  IN ('0','-',NULL)  
             THEN '0' 
             ELSE ISNULL(rdg.nPhoneNumber  ,'0')  END)
FROM tblReservation_Details_Guest RDG 
WHERE RDG.nReservationID = @nReservationID

2 个答案:

答案 0 :(得分:4)

听起来你只想要COALESCENULLIF

COALESCE(NULLIF(RDG.nPhoneNumber,'0'),NULLIF(RDG.nMobileNumber,'0'),'0')

COALESCE返回第一个非NULL表达式。如果NULLIF的两个参数匹配,NULL将返回COALESCE,否则返回其第一个参数。

如果NULLRDG.nPhoneNumberNULL,则'0'的第一个表达式为NULL。如果RDG.nMobileNumberNULL'0',则其第二个表达式为{{1}}。

答案 1 :(得分:0)

抱歉,没有任何效果....但这是我发现的答案

DECLARE @phoneNumber VARCHAR(MAX)
SELECT 
@phoneNumber =

(CASE WHEN RDG.nPhoneNumber IN ('0','-',NULL)
THEN RDG.nMobileNumber
WHEN RDG.nMobileNumber IN('0','-',NULL)
THEN 
RDG.nPhoneNumber
ELSE '0'
END)
FROM tblReservation_Details_Guest RDG where RDG.nReservationID=783689



SELECT
@phoneNumber as 'Phone number'

感谢您的回复和展示努力:)