Alguns Casos Especiais Onde a Determinação da Collation e Trabalhosa


Na grande maioria das consultas, é obvio qual collation que o MariaDB usa para resolver uma operação de comparação. Por exemplo, nos seguintes casos deve estar claro que a collationserá a collation de coluna da coluna x:

SELECT x FROM T ORDER BY x;
SELECT x FROM T WHERE x = x;
SELECT DISTINCT x FROM T;

No entanto, quando múltiplos operandos estão envolvidos, pode haver ambiguidade. Por exemplo:

SELECT x FROM T WHERE x = 'Y';

Esta consulta deve usar a collation de coluna x, ou da string literal 'Y'?

O padrão SQL resolve tal questão usando o que se costuma chamar real coercibilidade. A essência é: Como x e 'Y' tem collation, qual collation toma precedência? É complexo, mas estas regras cuidariam da maioria das situações:

Estas regras resolvem ambiguidades da seguinte forma:

Exemplos:

Retornar