1

请帮帮我

我想知道电话号码是否为空或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
4

2 回答 2

4

听起来你只想COALESCENULLIF

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

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

所以COALESCE第一个表达式将是NULLif RDG.nPhoneNumberis either NULLor '0'。它的第二个表达式将是NULLif RDG.nMobileNumberis either NULLor '0'

于 2013-03-26T08:10:50.050 回答
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'

感谢您的回复和努力:)

于 2013-03-26T09:49:04.403 回答