Questão nº 26
Questão de Suporte em Tecnologia da Informação · FGV TJDFT 2022 (nº 26)
Considere uma tabela relacional com uma coluna, intitulada Cidade, que contém as strings “São Paulo”, “Rio de Janeiro”, “Manaus”, “Sao Paulo”, “Manaus”, dispostas uma em cada linha.
A execução dos comandos SQL
```
SELECT Cidade FROM Locations
where Cidade COLLATE Latin1_General_CI_AI
in ('São Paulo','Rio de Janeiro', 'MANAUS')
SELECT Cidade FROM Locations
where Cidade COLLATE Latin1_General_CI_AS
in ('São Paulo','Rio de Janeiro', 'MANAUS')
SELECT Cidade FROM Locations
where Cidade COLLATE Latin1_General_CS_AI
in ('São Paulo','Rio de Janeiro', 'MANAUS')
```
no MS SQL Server produz resultados que, além da linha de títulos, contêm, respectivamente:
- A3, 4 e 5 linhas;
- B4, 3 e 5 linhas;
- C4, 5 e 3 linhas;
- D5, 3 e 4 linhas;
- E5, 4 e 3 linhas. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Conceito-chave: Collation define as regras de comparação de texto no SQL Server. As siglas significam: CI = Case Insensitive (não diferencia maiúsculas de minúsculas), CS = Case Sensitive (diferencia), AI = Accent Insensitive (não diferencia acentos, então "São" = "Sao"), AS = Accent Sensitive (diferencia acentos, então "São" ≠ "Sao").
(A) Incorreta: 3, 4 e 5 linhas não corresponde a nenhum dos três resultados, pois o primeiro comando (CI_AI) retorna 5 linhas (todas, incluindo "Sao Paulo" e as duas "Manaus"), não 3.
(B) Incorreta: 4, 3 e 5 linhas inverte a ordem dos resultados, mas o segundo comando (CI_AS) retorna 4 linhas (exclui "Sao Paulo", pois o acento é obrigatório), não 3.
(C) Incorreta: 4, 5 e 3 linhas falha no primeiro comando, que deveria retornar 5 linhas (CI_AI ignora acento e caixa), não 4.
(D) Incorreta: 5, 3 e 4 linhas erra no segundo comando, que retorna 4 linhas (CI_AS mantém "São Paulo" e "Rio de Janeiro", mas exclui "Sao Paulo"), não 3.
(E) Correta: O primeiro comando (`CI_AI`) ignora acento e caixa, então retorna todas as 5 linhas (inclui "Sao Paulo" e as duas "Manaus"). O segundo (`CI_AS`) ignora caixa, mas exige acento correto, então retorna 4 linhas (exclui "Sao Paulo"). O terceiro (`CS_AI`) diferencia caixa, mas ignora acento, então retorna 3 linhas (exclui "sao paulo" minúsculo e as duas "MANAUS" maiúsculas, pois a lista tem 'MANAUS' em maiúsculas, mas a coluna tem 'Manaus' com M maiúsculo e resto minúsculo).
Armadilha do distrator mais tentador (B): A banca tenta confundir quem acha que `CI_AS` retorna 3 linhas, esquecendo que "Rio de Janeiro" e "São Paulo" estão na lista com acento correto, e "Manaus" (sem acento) também casa com 'MANAUS' (CI ignora caixa). O erro é pensar que `AS` excluiria "Manaus", mas "Manaus" não tem acento, então não é afetado.
Fonte: FGV TJDFT 2022 Analista Judiciário - Suporte em Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.