Usuário com melhor resposta
Tratando Concatenação de Varchar no SQL

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
- Editado Robert Sancts quarta-feira, 27 de abril de 2016 18:17
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
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
-
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], -
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]
-
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]