Format output from select

1

I have a problem with formatting a column in gridview, this column receives three values from the concatenated database, the utlimo value can be null, if the value is null it does not have the last trace that separates the value 2 from the value 3 .

SELECT TOP(20)  IdItem, IdComanda, 
                       (convert(varchar(10),IdProduto) + '  -  ' + Produto.nomeproduto + ' -  ' + isnull(complemento,'')) as 'Item', 
                       Unid, 
                       Qtde, 
                       isnull(Pessoa.Apelido,'--') as 'Garcon', 
                       idStatusEntrega as 'Status', 
                       dtSolicitacao as 'HrSolicitacao', 
                        dtPreparo as 'HrPreparacao', 
                        Comanda.NrComanda, Comanda.NrMesa
                  FROM ComandaItem 
                 inner join Produto ON produto.ProdId = ComandaItem.IdProduto
                 INNER JOIN Comanda ON ComandaItem.IdComanda = Comanda.Id
                  left join Pessoa ON Pessoa.IDCadastro = ComandaItem.IdVendedor 
                 WHERE (idStatusEntrega = 1)  
                   and (@IdSetorPreparo = 0 or IdSetorPreparo = @IdSetorPreparo) 
                 ORDER BY dtPreparo DESC
    
asked by anonymous 03.09.2015 / 15:28

2 answers

6

Within the isnull function, simply concatenate '-' with the complement field.

When the complement field is null the result of the concatenation will be null.

It will look like this:

(convert(varchar(10),IdProduto) + '  -  ' + Produto.nomeproduto + isnull( ' -  ' + complemento,'')) as 'Item'
    
03.09.2015 / 15:48
0

And if you use the SUBSTRING function.

SUBSTRING (
(
    convert(varchar(10),IdProduto) + 
    ' - ' + Produto.nomeproduto + 
    ' - '  + isnull(complemento,'')),
0, 
LEN(
    (convert(varchar(10),IdProduto) + 
     ' - ' + Produto.nomeproduto + 
     ' - ' + isnull(complemento,'')) -3) as 'Item',
    
03.09.2015 / 16:07