0

我有一个场景,我需要选择一行并将值连接到单个变量中。问题是如果某些列为空,则必须省略该部分。但在我的场景中,它给出了一个连字符,我在空白处使用它可以帮助我解决这个问题。

我试过这个......

SELECT  @Location_Details = CONVERT(VARCHAR, ISNULL(O.CSS_No, ''))
                + '-' + CONVERT(VARCHAR, ISNULL(STREET.STREET_START_X, ''))
                + '-' + CONVERT(VARCHAR, ISNULL(STREET.STREET_START_Y, ''))
                + '-' + CONVERT(VARCHAR, ISNULL(STREETDES.STREET_DESCRIPTOR,
                                                '')) + '-'
                + CONVERT(VARCHAR, ISNULL(STREETDES.LOCALITY_NAME, '')) + '-'
                + CONVERT(VARCHAR, ISNULL(STREETDES.TOWN_NAME, '')) + '-'
                + CONVERT(VARCHAR, ISNULL(HW.Description, '')) + '-'
                + CONVERT(VARCHAR, ISNULL(Add_stree.Additional_Street_Location_Text,
                                          ''))
        FROM    dbo.[order] O WITH ( NOLOCK )
                LEFT JOIN dbo.Order_USRN_Header USRN WITH ( NOLOCK ) ON USRN.Order_No = O.Order_No
                LEFT JOIN DatabaseName.dbo.STREET STREET WITH ( NOLOCK ) ON STREET.USRN_NO = USRN.USRN_No
                LEFT JOIN DatabaseName.dbo.STREET_DESCRIPTOR STREETDES WITH ( NOLOCK ) ON STREETDES.USRN_NO = USRN.USRN_No
                LEFT JOIN dbo.High_Way_Authority HW WITH ( NOLOCK ) ON HW.HW_Authority_ID = STREET.SWA_ORG_REF
                LEFT JOIN [DatabaseName].dbo.additional_STREET Add_stree WITH ( NOLOCK ) ON USRN.USRN_No = Add_stree.USRN
        WHERE   O.Order_No ='123456'

这给出了这样的结果......

-565654-48798-MAIN STREET-Chennai-Tamilnadu-India-

有人可以帮忙吗...

4

1 回答 1

4

使用ISNULL(O.CSS_No+'-', '')代替ISNULL(O.CSS_No, '') + '-'

此外,可能不需要每次都将已经是字符串的字段转换为 varchar。

于 2012-09-04T09:18:55.493 回答