我有一个查询,我将在我的一个存储过程中使用。规范规定,在表中,应该有3个部分的地址,但是将合并到一个列中:AddressLine1是Street,AddressLine2是Subdivision /,AddressLine3是City / State /省。在所有这3个字段中,只有AddressLine1是必需的,其他2可以保留为NULL。这是我的代码将3个地址字段合并为一个:
(tb_TransactionName.AddressLine1 + ' ' + tb_TransactionName.AddressLine2 + ' ' + tb_TransactionName.AddressLine3) as 'Address'
鉴于此,我在AddressLine1中输入了文本。但每当我运行查询时,地址列显示NULL。当我不添加3个地址字段并仅显示AddressLine1时,AddressLine1列下的文本出现在结果中。对于其他信息,表tb_Transaction是左连接到另一个表tb_TransactionDetails:
FROM (tb_TransactionType inner join tb_TransactionDetails
on tb_TransactionType.TxnTypeCode = tb_TransactionDetails.TxnType)
LEFT JOIN tb_TransactionName on tb_TransactionDetails.TxnID = tb_TransactionName.TxnID
任何想法可能是什么问题,为什么合并列显示NULL?
答案 0 :(得分:2)
我打赌你加入的其中一个列是NULL值,这会使结果为NULL。
试试这个:
(tb_TransactionName.AddressLine1 + ' ' + ISNULL(tb_TransactionName.AddressLine2, '') + ' ' + ISNULL(tb_TransactionName.AddressLine3, '')) as 'Address'
答案 1 :(得分:1)
(ISNULL(tb_TransactionName.AddressLine1,'') + ' ' +
ISNULL(tb_TransactionName.AddressLine2,'') + ' ' +
ISNULL(tb_TransactionName.AddressLine3,'') as 'Address'