SQL使用NA连接和替换空格

时间:2013-05-21 10:27:55

标签: sql

我正在尝试加入两个SQL次查询

例如

  • 表1有Empname,Empcode
  • 表2有Empname,Empcode,Empsalary

我想在没有薪水的情况下获取姓名和工资详情,然后它必须反映为“NA”

我的查询是:

select a.Empname,if((Empsalary=" "),"NA",b.salary) as salary
from
(select Empname,empcode from Table 1) as a
inner join all
(select Empcode,Empsalary from Table 2) as b
on a.empcode=b.empcode

此查询是否正确。

5 个答案:

答案 0 :(得分:1)

select 
  a.Empname,
  CASE 
    WHEN b.Empsalary = '' OR b.Empsalary IS NULL THEN 'NA' 
    ELSE b.Empsalary 
  END as salary
from Table 1 as a
inner join Table 2 as b on a.empcode = b.empcode

答案 1 :(得分:0)

你可以使用;

ISNULL(field_name, 'NA')

答案 2 :(得分:0)

Mahmoud Gamal发布的一个稍微好一点的变体是该列的LTRIMRTRIM,因此如果该行有一个 space 工资栏被淘汰。 LTRIMRTRIM会从字符串中删除左右白色空格。

你要用它来确保你总是比较同样的事情,因为''与''不同。

select 
  a.Empname,
  CASE 
    WHEN LTRIM(RTRIMb.Empsalary)) = '' OR b.Empsalary IS NULL THEN 'NA' 
    ELSE b.Empsalary 
  END as salary
from Table 1 as a
inner join Table 2 as b on a.empcode = b.empcode

答案 3 :(得分:0)

ISNULL是一个方言特定的运营商; COALESCE是ANSI版本(工作原理相同,但可以有两个以上的参数,并返回第一个非空的参数)。

答案 4 :(得分:0)

左边连接是否合适,因为你可能有一个emp但没有条目(而不是表2中的空工资)

use foo::A;