Sql server 2008 为缺少的数据库值填充静态值

Sql server 2008 为缺少的数据库值填充静态值,sql-server-2008,if-statement,join,missing-data,Sql Server 2008,If Statement,Join,Missing Data,我有一个查询,可以从数据库中提取一些记录——使用几个表将代理名称与他们的销售额联系起来。我的问题是-代理电话号码、代理名字和姓氏并不总是在数据库中。对于这些值,我想为它们的名字和姓氏填充“未知”。我现在的查询-跳过它们,因为它们不匹配 select recordings.ident,users.first_name,users.last_name,recordings.agent_number,recordings.device_id from recordings join agent_p

我有一个查询,可以从数据库中提取一些记录——使用几个表将代理名称与他们的销售额联系起来。我的问题是-代理电话号码、代理名字和姓氏并不总是在数据库中。对于这些值,我想为它们的名字和姓氏填充“未知”。我现在的查询-跳过它们,因为它们不匹配

select recordings.ident,users.first_name,users.last_name,recordings.agent_number,recordings.device_id from recordings
  join agent_phones
    on recordings.agent_number=agent_phones.phone_id
      join users
        on agent_phones.agent_id=users.uid

是否有一种方法可以在查询中执行某种“如果”?因此,“如果”代理电话中不存在代理号码-我可以用静态的“未知”填充第一个和最后一个。您正在查找
LEFT JOIN
子句,该子句还包括无法连接的行(在第二个/右表中没有匹配的行)。然后,第二个/右表中的值为
NULL

SELECT recordings.ident, users.first_name, users.last_name, recordings.agent_number, recordings.device_id
FROM recordings
  LEFT JOIN agent_phones
    ON recordings.agent_number = agent_phones.phone_id
  LEFT JOIN users
    ON agent_phones.agent_id = users.uid
还可以使用
COALESCE
函数进一步扩展该函数,以返回指定的字符串,而不是
NULL
值:

SELECT
    recordings.ident,
    COALESCE(users.first_name, 'unknown'),
    COALESCE(users.last_name, 'unknown'),
    recordings.agent_number,
    recordings.device_id
FROM ...

您正在查找
LEFT JOIN
子句,该子句还包括无法联接的行(在第二个/右侧表中没有匹配的行)。然后,第二个/右表中的值为
NULL

SELECT recordings.ident, users.first_name, users.last_name, recordings.agent_number, recordings.device_id
FROM recordings
  LEFT JOIN agent_phones
    ON recordings.agent_number = agent_phones.phone_id
  LEFT JOIN users
    ON agent_phones.agent_id = users.uid
还可以使用
COALESCE
函数进一步扩展该函数,以返回指定的字符串,而不是
NULL
值:

SELECT
    recordings.ident,
    COALESCE(users.first_name, 'unknown'),
    COALESCE(users.last_name, 'unknown'),
    recordings.agent_number,
    recordings.device_id
FROM ...

我会在SQL Server中使用
'unknown'
而不是
“unknown”
“这是一个带引号的标识符,不是字符串”@AaronBertrand谢谢,修复了它。我会在SQL Server中使用
'unknown'
而不是
“unknown”
“这是一个带引号的标识符,不是字符串”@AaronBertrand谢谢,修复了它。