如何使用case语句检查列是否为null

时间:2013-10-01 08:03:20

标签: sql-server-2008

我必须使用3个表创建存储过程,第1个是注册表,求职者表,就业详细信息表。 因为我在前两张表中有条目。到目前为止,我没有在就业细节表中输入任何条目。

我有以下查询:

select RD.FirstName,RD.LastName,
(select case when JR.profileHeadline=''
then 'No Resume Headline mentioned' 
else JR.profileHeadline end
from jobseekerReg JR)as profileHeadline ,
(select case when ED.designation=''
then 'No designation mentioned'
else ED.designation end
from employmentDetail ED)as designation,
(select case when ED.companyName=''
then 'No company name mentioned'
else ED.companyName end
from employmentDetail ED) as companyName,JR.location,
(select case when ED.funcArea=''
then 'No functional area mentioned'
else ED.funcArea end
from employmentDetail ED) as funcArea ,
(select case when ED.cmpIndustry=''
then 'No industry mentioned'
else ED.cmpIndustry end
from employmentDetail ED)as cmpIndustry,RD.BirthDay,
RD.Gender,JR.experience,
(select case when ED.salary=''
then 'No salary mentioned'
else ED.salary end
from employmentDetail ED)as salary ,JR.mobileNumber,JR.emailId,
JR.altEmailID,JR.jobSeekerAddrs,JR.maritalStatus,
(select case when JR.keySkills=''
then 'No keyskills mentioned'
else JR.keySkills end
from jobseekerReg JR)as keySkills
from RegistrationDetails RD join jobseekerReg JR on RD.Reg_Id=JR.regId
left outer join employmentDetail ED on ED.regId=JR.regId 
and ED.regId=2  where RD.Reg_Id=JR.regId and RD.Reg_Id=2 and JR.regId=2

上面的查询给出了正确的输出,但问题是因为我没有在就业表中为regId = 2输入任何条目,此表中的列将输出显示为null。 我该如何处理这个问题? 建议我解决 提前谢谢。

1 个答案:

答案 0 :(得分:1)

CASE WHEN ED.Salary IS NULL THEN 'No salary mentioned' ELSE ED.Salary END

但我认为在你的情况下ISNULL()会更好:

select RD.FirstName,RD.LastName,
ISNULL(JR.profileHeadline, 'No Resume Headline mentioned') as profileHeadline ,
ISNULL(ED.designation, 'No designation mentioned') as designation,
ISNULL(ED.companyName, 'No company name mentioned')  as companyName, 
JR.location,
ISNULL(ED.funcArea, 'No functional area mentioned') as funcArea ,
ISNULL(ED.cmpIndustry, 'No industry mentioned') as cmpIndustry,
RD.BirthDay,
RD.Gender, JR.experience,
ISNULL(ED.salary, 'No salary mentioned' as salary ,
JR.mobileNumber,JR.emailId,
JR.altEmailID,JR.jobSeekerAddrs,JR.maritalStatus,
ISNULL(JR.keySkills, 'No keyskills mentioned') as keySkills
from RegistrationDetails RD join jobseekerReg JR on RD.Reg_Id=JR.regId
left outer join employmentDetail ED on ED.regId=JR.regId 
and ED.regId=2  where RD.Reg_Id=JR.regId and RD.Reg_Id=2 and JR.regId=2