Questão nº 45
Questão de Banco de Dados · FCC TJ-CE 2022 (nº 45)
Considere a função abaixo criada em um banco de dados MySQL em condições ideais, que possui a tabela `usuarios` com os campos `usuario`, `senha` e `cargo`, todos do tipo `varchar`.
```sql
CREATE DEFINER=`root`@`localhost` FUNCTION `Apoio`(ent VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb4
DETERMINISTIC
BEGIN
DECLARE len INT;
DECLARE i INT;
SET len = CHAR_LENGTH(ent);
SET i = 0;
WHILE (i < len) DO
IF (MID(ent,i,1) = ' ' OR i = 0) THEN
IF (i < len) THEN
SET ent = CONCAT(
LEFT(ent,i),
UPPER(MID(ent,i + 1,1)),
RIGHT(ent,len - i - 1)
);
END IF;
END IF;
SET i = i + 1;
END WHILE;
RETURN ent;
END
```
Esta função foi executada pelo comando abaixo.
```sql
SELECT Apoio(cargo) from usuarios;
```
Espera-se, como resultado, uma lista com os conteúdos do campo `cargo`
- Aseparada em um array onde cada caractere ocupa uma posição do array.
- Bcom a primeira letra, de cada palavra que compõe o nome do cargo, maiúscula e o restante das letras minúsculas. (alternativa correta)
- Ccom as palavras que compõem o nome do cargo em posições invertidas, caso o cargo tenha mais que uma palavra.
- Dem ordem alfabética decrescente.
- Ecom todas as letras maiúsculas.
Resposta comentada
Gabarito Alternativa B
Uma função armazenada (Stored Function) no MySQL é um bloco de código SQL que executa uma tarefa específica e retorna um único valor, agindo como um pequeno programa dentro do banco de dados para manipular dados. Esta função em particular processa uma string (cadeia de caracteres) para alterar a capitalização de suas letras.
- (A) Incorreta: A função retorna um valor do tipo
VARCHAR(255), que é uma única string. Ela não cria nem retorna um array de caracteres. - (B) Correta: A função itera pela string de entrada. Ela capitaliza o primeiro caractere da string (condição
i = 0). Para os caracteres seguintes, ela verifica se o caractere anterior (acessado porMID(ent,i,1)) era um espaço. Se for, ela capitaliza o caractere atual (acessado porUPPER(MID(ent,i + 1,1))). Isso resulta na primeira letra de cada palavra sendo maiúscula. Embora a função não converta explicitamente as outras letras para minúsculas, se a entrada for predominantemente minúscula ou mista, o efeito final será de "título" ou "capitalização de palavras". A armadilha da banca aqui é a parte "e o restante das letras minúsculas", pois a função apenas capitaliza, não minúscula o restante; mas, das opções, é a que melhor descreve o comportamento principal da função. - (C) Incorreta: A função modifica a caixa dos caracteres, mas não reordena ou inverte as palavras dentro da string.
- (D) Incorreta: A função realiza manipulação de string baseada na posição e tipo do caractere (espaço ou não), não em ordenação alfabética.
- (E) Incorreta: A função
UPPER()é usada, mas apenas em caracteres específicos (o primeiro da string e o primeiro após cada espaço), não em toda a string. Portanto, nem todas as letras se tornam maiúsculas.
Fonte: FCC TJ-CE 2022 Analista Judiciário - Especialidade Ciência da Computação - Área Sistemas da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.