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谢谢,修复了它。