0

行を選択して値を単一の変数に連結する必要があるシナリオがあります。問題は、特定の列がnullの場合、その部分を除外する必要があることです。しかし、私のシナリオでは、空のスペースで使用したハイフンが表示され、誰かがこれを支援してくれます。

私はこれを試しました.....

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-メインストリート-チェンナイ-タミルナドゥ-インド-

誰かがこれを助けることができますか...

4

1 に答える 1

4

などISNULL(O.CSS_No+'-', '')の代わりに使用ISNULL(O.CSS_No, '') + '-'

また、すでに文字列になっているフィールドを毎回varcharに変換する必要はおそらくありません。

于 2012-09-04T09:18:55.493 に答える