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

Quando devemos usar COLLATE

Eu estava realizando a primeira parte do INNER JOIN (parei no tempo 4:51 do video) e quando executei o comando recebi o seguinte erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O seguinte comando funcionou para realizar o INNER JOIN:

SELECT
    FONTE.[CODIGO DO PRODUTO],
    FONTE.[PREÇO DE LISTA],
    DESTINO.CODIGO,
    DESTINO.[PRECO LISTA]
FROM
    SUCOS_VENDAS.dbo.[TABELA DE PRODUTOS] FONTE
    INNER JOIN
    PRODUTOS DESTINO
    ON FONTE.[CODIGO DO PRODUTO] COLLATE Latin1_General_CS_AS = DESTINO.CODIGO COLLATE Latin1_General_CS_AS
WHERE
    CODIGO = '1002334'

Note-se que utilizo o COLLATE em ambos lados da igualdade do ON.

Pesquisei e achei que tenho que utilizar o COLLATE, no entanto ainda estou com dúvidas do porquê devo utilizar e quando devo utilizar.

2 respostas
solução!

Boa tarde!

Esse erro ocorre provavelmente a configuração do COLLATE está diferente entre as colunas das duas tabelas. Para você verificar pode usar o comando abaixo. Por isso você esta precisando utilizar o COLLATE na consulta.

    sp_help "nome_tabela"

Essa configuração pode estar presente em três níveis. SQL Server, Banco de dados e no por coluna. Geralmente a coluna herda da banco de dados. É uma configuração utilizada no banco de dados para dizer como ele deve comparar e ordenar caracteres.

  • LATIN1: define o chaset (link)
  • CS: Especifica como Case Sensitive;
  • AI: Especifica como Accent Insensitive.
  • Também temos outras opções, como:
  • CI: Especifica como Case Insensitive.
  • AS: Especifica como Accent Sensitive
  • BIN: Especifica a ordem de classificação a ser utilizada como binária.

Espero ter ajudado em seu entendimento.

Boa noite Vinicius, obrigado pela resposta!

Era isso mesmo, as Collations dass tabelas são diferentes e por isso ele só funciona quando colocando o comando COLLATE.

Estarei anexando aqui os prints que direi do resultado da execução do comando informado por ti, assim qualquer pessoa com o mesmo problema pode acessar e resolver o problema.

Obrigado!

Resultado do comando para TABELA DE PRODUTOS no BD SUCOS_VENDAS: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Resultado do comando para PRODUTOS no BD VENDAS SUCOS: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

P.D.: Acredito que o problema veio da restauração do BD SUCOS_VENDAS, pois VENDAS SUCOS foi criado no andar do curso no meu computador. Eu tenho configurado com o idioma principal em inglês e a data americana, acredito que isso possa ter causado o problema.

Novamente obrigado pela ajuda!