none
Tratando Concatenação de Varchar no SQL RRS feed

  • Pergunta

  • Boa tarde.  criei esta stored Procedure

    Ao final crio 03 campos em memoria que pega todos os valores concatenado dos campos de descrição de todas as tabelas

    porem alguma tabelas possui campo NULL, acaba retornando NULL, somente os campos que possui todos os campos preenchidos acaba validado as informações.


    CREATE PROCEDURE [dbo].[usp_MATERIAL_CARREGAR]

     AS

     BEGIN
     SELECT  DG.id_dgt,
               --TABELA GRUPO
            GR.id_gr,GR.grupo,

               --TABELA FAMILIA
            FM.id_f,FM.familia,

      --TABELA SUBFAMILIA
            SB.iD_sf,SB.subfamilia,
     
     --TABELA TIPO
            TP.id_tp, TP.desc_tipo_pt,TP.desc_tipo_us,tp.desc_tipo_spn,
     
     --TABELA NORMA MATERIAL
    NM.id_n_mat, NM.desc_n_mat_pt, NM.desc_n_mat_us,nm.desc_n_mat_spn,
     
     --TABELA NORMA DIMENSIONAL
            ND.id_n_dimen,ND.desc_n_dim_pt,ND.desc_n_dim_us,ND.desc_n_dim_spn,

     --TABELA DIMENSIONAL
            DI.id_dim, DI.des_dim_pt, DI.des_dim_us,DI.des_dim_spn,

     --TABELA SCH
    SC.id_sc, SC.des_sch_pt,SC.des_sch_us,SC.des_sch_spn,

     --TABELA EXTREMIDADE  
            EX.id_ext, EX.des_ext_pt, EX.des_ext_us,EX.des_ext_spn,
     
    --TABELA INSPESOES
            INS.id_insp, INS.des_ins_pt,INS.des_ins_US,INS.des_ins_spn,

     --TABELA DGT
      DG.DGT,DG.YFP_YRES,DG.YRAW, DG.norma,DG.dr_eng,DG.marca,DG.des_curta_pt,DG.des_curta_us,DG.des_curta_spn,

       CONCAT(tp.desc_tipo_pt ,NM.desc_n_mat_pt))+
    RTRIM(LTRIM(ND.desc_n_dim_pt))+
    RTRIM(LTRIM(DI.des_dim_pt))+
    RTRIM(LTRIM(SC.des_sch_pt))+
    RTRIM(LTRIM(EX.des_ext_pt))+
    RTRIM(LTRIM(INS.des_ins_pt)) )[LONGA],

      
      RTRIM(LTRIM(TP.desc_tipo_US))+
      RTRIM(LTRIM(NM.desc_n_mat_us))+
      RTRIM(LTRIM(ND.desc_n_dim_us))+
      RTRIM(LTRIM(DI.des_dim_us))+
      RTRIM(LTRIM(SC.des_sch_us))+
           RTRIM(LTRIM(EX.des_ext_us))+
      RTRIM(LTRIM(INS.des_ins_us)) [LONG],

      
      
      RTRIM(LTRIM(TP.desc_tipo_spn))+
      RTRIM(LTRIM(NM.desc_n_mat_spn ))+
      RTRIM(LTRIM(ND.desc_n_dim_spn))+
      RTRIM(LTRIM(DI.des_dim_spn))+
      RTRIM(LTRIM(SC.des_sch_spn))+
           RTRIM(LTRIM(EX.des_ext_spn))+
      RTRIM(LTRIM(INS.des_ins_spn)) [DETALLADA]


      
       FROM tbl_DGT AS DG
     INNER JOIN tbl_GRUPO AS GR ON DG.id_grupo = GR.id_grupo 
     INNER JOIN tbl_FAMILIA AS FM ON DG.id_familia= FM.id_familia
     INNER JOIN tbl_SUBFAMILIA AS SB ON DG.id_subfamilia=SB.id_subfamilia
     INNER JOIN tbl_TIPO AS TP ON DG.id_tipo = TP.id_tipo
     INNER JOIN tbl_N_MATERIAL AS NM ON DG.id_n_material= NM.id_n_material
     INNER JOIN tbl_N_DIMENCIONAL AS ND ON DG.id_n_dimencional= ND.id_n_dimencional
     INNER JOIN tbl_DIMENSIONAL AS DI ON DG.id_dimensao = DI.id_dimensao
     INNER JOIN tbl_SCH AS SC ON DG.id_sch = SC.id_sch
     INNER JOIN tbl_EXTREMIDADE AS EX ON DG.id_extrem = EX.id_extrem
     INNER JOIN tbl_INSPENSOES AS INS ON DG.id_inspencoes= INS.id_inspencoes



     



    quarta-feira, 27 de abril de 2016 18:14

Respostas

Todas as Respostas

  • Boa tarde,

    Experimente utilizar a função IsNull ou Coalesce para trocar o null por um espaço vazio. Ex:

    ISNULL(DescricaoA, '') + ISNULL(DescricaoB, '') as Descricao

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Robert Sancts quarta-feira, 27 de abril de 2016 19:22
    quarta-feira, 27 de abril de 2016 18:52
  • Boa tarde,

    Experimente utilizar a função IsNull ou Coalesce para trocar o null por um espaço vazio. Ex:

    ISNULL(DescricaoA, '') + ISNULL(DescricaoB, '') as Descricao

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    O ISNULL, resolveu muito Obrigado gapimex. 

    Fiz Assim caso mais alguém esteja começando com sql. 


            RTRIM(LTRIM(isnull(tp.desc_tipo_pt,'')))+
    RTRIM(LTRIM(isnull(NM.desc_n_mat_pt,'')))+
    RTRIM(LTRIM(isnull(ND.desc_n_dim_pt,'')))+
    RTRIM(LTRIM(isnull(DI.des_dim_pt,'')))+
    RTRIM(LTRIM(isnull(SC.des_sch_pt,'')))+
    RTRIM(LTRIM(isnull(EX.des_ext_pt,'')))+
    RTRIM(LTRIM(isnull(INS.des_ins_pt,''))) [LONGA],

    quarta-feira, 27 de abril de 2016 19:25
  • Robert,

    A partir da versão 2012 do SQL Server ficou mais fácil realizar concatenação de dados através da função Concat(), pode ser uma boa solução para o seu problema.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 28 de abril de 2016 14:03
  • Robert,

    A partir da versão 2012 do SQL Server ficou mais fácil realizar concatenação de dados através da função Concat(), pode ser uma boa solução para o seu problema.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Muito Obrigado.
    quinta-feira, 28 de abril de 2016 17:43