Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

quando executo o código abaixo aperece essa mensagem

mensagem : cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.

SELECT A.CODIGO AS CODIGO_MINHA_TABELA, A.PRECO_LISTA AS PRECO_MINHA_TABELA, B.CODIGO_DO_PRODUTO AS CODIGO_TABELA_APOIO, B.PRECO_DE_LISTA AS PRECO_TABELA_APOIO FROM PRODUTOS A INNER JOIN SUCOS_FRUTAS.dbo.TABELA_DE_PRODUTOS B ON A.CODIGO = B.CODIGO_DO_PRODUTO, podem ajudar, por favor.

Usei o script abaixo e não adiantou, não consigo continuar;

SELECT * FROM PRODUTOS JOIN SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS ON PRODUTOS.CODIGO COLLATE Latin1_General_CI_AS = SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS.CODIGO_DO_PRODUTO COLLATE Latin1_General_CI_AS;

2 respostas
solução!

Oii, Nestor. Tudo bem por aí?

Você está fazendo um INNER JOIN com duas tabelas de diferentes tipos de collation.

Collation é a configuração que determina como o SQL Server compara e classifica os caracteres de strings. Uma está com a "Latin1_General_CI_AS" e a outra está usando a "SQL_Latin1_General_CP1_CI_AS". Por isso há o conflito: são duas collations diferentes.

Você pode forçar a collation de uma das colunas para que corresponda à outra. Um exemplo é deste modo:

SELECT 
A.CODIGO AS CODIGO_MINHA_TABELA, A.PRECO_LISTA AS PRECO_MINHA_TABELA, 
B.CODIGO_DO_PRODUTO AS CODIGO_TABELA_APOIO, B.PRECO_DE_LISTA AS PRECO_TABELA_APOIO 
FROM PRODUTOS A 
INNER JOIN SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS B 
ON A.CODIGO COLLATE SQL_Latin1_General_CP1_CI_AS = B.CODIGO_DO_PRODUTO;

No exemplo acima eu estou fazendo com que a coluna CODIGO da tabela PRODUTOS use a collation "SQL_Latin1_General_CP1_CI_AS" com o nosso JOIN.

Tente rodar o código, por favor, para ver se funciona certinho.

Se a dúvida persistir, pode nos retornar aqui no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Bom dia, ufa deu certo, obrigado