- CONCAT_WS(' - ',coluna1,coluna2)
- CONCAT(coluna1,' - ',coluna2)
- CAST(CONCAT_WS(' - ',coluna1,coluna2) AS CHAR)
- CONVERT(CONCAT_WS(' - ',coluna1,coluna2), CHAR)
Solução:
- CONCAT_WS(' - ',CAST(coluna1 AS CHAR),coluna2)
- coluna1 é do tipo INT;
- coluna 2 é do tipo VARCHAR;
Hoje apanhei um pouco deste problema!
Precisava preencher uma lista de opções usando duas colunas de uma tabela, com a seguinte estrutura:
"[coluna1] - [coluna2]", por exemplo: "3 - Sala de Reuniões".Pensei: FÁCIL! Fui direto na opção 1 (acima) ... #fail ... Na esperança, tentei a opção 2 ... #fail again...
Visitei diversos sites na internet - incluindo o de documentação do MySQL e a de relatos de bugs no MySQL - e percebi que muitos que reclamavam deste comportamento estavam misturando colunas numéricas e alfanuméricas (como era o meu caso, já que uma de minhas colunas é do tipo INT e a outra VARCHAR).
Resolvi tentar converter o resultado final, foi quando tentei as opções 3 e 4... Outro problema, agora não apareciam as letras acentudas, no lugar apenas uma interrogação... Mais uma navegada na internet e nada, tentei mudar o character_set usando CAST e alterando o tipo de character_set e collation, como em:
CAST(CONCAT(coluna1,' - ',coluna2) AS CHAR CHARACTER SET utf8) COLLATE utf8_bin
Tentei diversos character_set e collation mas ... nada! Até que resolvi não mais converter o resultado final, e sim a coluna do tipo INT e ... Voilà! Mais uma pro Baú do Raul!
Abraço a todos!
Cara, um SALVE pra ti, eu estava com o mesmo problema, tentei as mesmas soluções, e, em uma última googleada, teu post foi o primeiro da lista e o primeiro que realmente me ajudou.
ResponderExcluirValeu!
Parabéns!!! Muito mais fácil que eu imaginava e funcionou.
ResponderExcluir