20
08
08

00:50

MS-SQL: Cannot resolve collation conflict for equal to operation

Cara, se tem um erro de SQL que me deu dor de cabeça nos últimos dias foi este aí.

O que acontece:

Você tem uma query que faz comparação com dois campos texto, um de uma tabela normal e outro em uma tabela temporária.

Exemplo:

SELECT ID
FROM tbl1
INNER JOIN tbl2
WHERE tbl1.txt = tbl2.txt
É quase certeza de que vai dar pau, principalmente se você exportar esta base para outro lugar.

No novo ambiente, as tabelas vão assumir o collation default, a não ser quando for explicito no campo.

Mas o mesmo não acontece com as tabelas temporárias, e aí está um fator que pode gerar erros no futuro.

O collation dos dois campos que devem ser comparados vão ser diferentes e o servidor vai retornar uma mensagem de erro.

A solução, apesar de simples foi difícil de achar, mas finalmente está aí para que eu nunca mais esqueça:

SELECT ID
FROM tbl1
INNER JOIN tbl2
WHERE
tbl1.txt COLLATE DATABASE_DEFAULT = tbl2.txt COLLATE DATABASE_DEFALT
Marcadores: Microsoft, Tecnologia, Trabalho

8 Comentário(s): Daniel, O Doido Vinicius, Daniel Tavares, Eder, Genivaldo, Danilo Rodrigues, Renan, Marcos Lopes
Assine o feed!
Crazy Talk #8
A trilha sonora de House MD.

Nesta edição escutamos músicas que tocaram em algum episódio do seriado do dr. House.

Entre as bandas escolhidas estão Massive Attack, Ray Charles, Jimi Hendrix, Fiona Apple e Boomtown Rats.

Outros programas aqui.
Quem procura acha
Busca Doido:

Últimas 5 buscas

Top comentaristas
1MoG (275)
2Nacca (190)
3kim (131)
4Dani (100)
5Gratuidade (63)