Sql server 如何使用左连接和空值执行update语句
我试图更新一个值为空的表。这就是我到目前为止所做的Sql server 如何使用左连接和空值执行update语句,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我试图更新一个值为空的表。这就是我到目前为止所做的 update s set s.trading_partner_name = '12345' , s.edi_interchange_id_qualifier = '01' , s.edi_interchange_id = '12345' , s.application_code = '12345' , s.element_separator = '*'
update s
set s.trading_partner_name = '12345'
, s.edi_interchange_id_qualifier = '01'
, s.edi_interchange_id = '12345'
, s.application_code = '12345'
, s.element_separator = '*'
, s.repetition_separator = 'U'
from customer_edi_setting s
right join customer c on c.customer_id = s.customer_id
where c.class_1id like 'test customer'
这将更新所有值,但这些字段中具有空值的客户除外。我正在尝试更新具有空值的客户。非常感谢您的帮助
我得到了这样的东西
CustomerID TradingPartnerName EdiInterchangeIdQualifier EdiInterchangeId ApplicationCode
ABC 12345 01 12345 12345
DEF null null null null
GHI 12345 01 12345 12345
但是我想要
ABC 12345 01 12345 12345
DEF 12345 01 12345 12345
GHI 12345 01 12345 12345
试试这个
UPDATE s
SET s.trading_partner_name = COALESCE(s.trading_partner_name, '12345'),
s.edi_interchange_id_qualifier =
COALESCE(s.edi_interchange_id_qualifier, '01'),
s.edi_interchange_id = COALESCE(s.edi_interchange_id, '12345'),
s.application_code = COALESCE(s.application_code, '12345'),
s.element_separator = COALESCE(s.element_separator, '*'),
s.repetition_separator = COALESCE(s.repetition_separator, 'U')
FROM customer_edi_setting s
INNER JOIN customer c
ON c.customer_id = s.customer_id
WHERE c.class_1id LIKE 'test customer'
你能详细说明零号问题的适用范围吗?从您的问题来看,您似乎只想更新“不具有空值”的值。这更新了与原始字段相同的字段,但没有更新具有空值的字段。@TonyBergeson-您可以在问题中添加示例数据和预期输出吗?这有意义吗?还是我需要进一步澄清?谢谢你的帮助!