Considere os dois comandos abaixo colocados, emitidos a partir do sistema gerenciador de banco de dados MySQL (8.0).
a: SELECT STRCMP (‘fase’, ‘fase2’);
b: SELECT STRCMP (‘tecla’, ‘tecla’);
O resultado da execução desses comandos no MySQL (8.0) será, respectivamente
Aa: 0, b: –1.
Ba: –1, b: 1.
Ca: –1, b: 0.
Da: 1, b: 0.
Ea: 1, b: –1.
Revelar gabarito e comentário▾
GabaritoC — a: –1, b: 0.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Função STRCMP no MySQL
Gabarito: letra C. A função STRCMP do MySQL compara duas strings e retorna 0 se forem iguais, -1 se a primeira for menor que a segunda (em ordem lexicográfica) e 1 se a primeira for maior. No comando a, 'fase' é menor que 'fase2' (porque é prefixo e mais curto), logo retorna -1; no comando b, as strings são idênticas, logo retorna 0. A alternativa correta é a C.
A função STRCMP (abreviação de string compare) é uma função nativa do MySQL que realiza a comparação de duas strings de forma binária, ou seja, levando em conta a diferenciação entre maiúsculas e minúsculas e também caracteres acentuados. Ela é amplamente utilizada em consultas para ordenar ou filtrar dados textuais, e seu comportamento é definido pela documentação oficial do MySQL.
O retorno da função segue a lógica da comparação lexicográfica (ordem alfabética):
Se as duas strings forem exatamente iguais, o retorno é 0.
Se a primeira string for menor que a segunda (ou seja, vem antes na ordem alfabética), o retorno é -1.
Se a primeira string for maior que a segunda (vem depois na ordem alfabética), o retorno é 1.
Essa comparação é feita caractere por caractere, utilizando os valores binários de cada caractere. No caso de uma string ser prefixo da outra (como 'fase' e 'fase2'), a string mais curta é considerada menor, pois ao chegar ao fim dela, a comparação conclui que ela é menor que a mais longa.
Vamos aplicar isso aos comandos do enunciado:
Comando a:SELECT STRCMP('fase', 'fase2'); — A string 'fase' é prefixo de 'fase2' e, portanto, é menor. O retorno é -1.
Comando b:SELECT STRCMP('tecla', 'tecla'); — As duas strings são idênticas, então o retorno é 0.
Portanto, a sequência correta é a: -1, b: 0, que corresponde à letra C.
NÃO CAIA NESSA!
A banca explora a confusão entre o retorno da função e o resultado de uma comparação comum. Muitos candidatos invertem os sinais, achando que -1 significa "maior" ou que 0 significa "diferente". Lembre-se: 0 = iguais, -1 = primeira menor, 1 = primeira maior. Outra pegadinha comum é não perceber que 'fase' é menor que 'fase2' por ser prefixo — a string mais curta sempre é menor quando é prefixo da outra.
1Strings iguais → 0
21ª menor → -1
31ª maior → 1
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que a: 0, b: -1. O erro está em inverter os resultados: 'fase' e 'fase2'não são iguais, então a não pode ser 0. Além disso, 'tecla' e 'tecla' são iguais, então b deveria ser 0, não -1. Essa alternativa confunde o caso de igualdade com o caso de diferença.
Alternativa B — ❌ Incorreta
Afirma que a: -1, b: 1. O valor de a está correto (-1), mas b está errado: como as strings são idênticas, o retorno é 0, não 1. O candidato pode ter pensado que 1 indica "iguais", mas na verdade 1 indica que a primeira é maior.
Alternativa C — ✅ Correta ⟵ GABARITO
Apresenta exatamente o comportamento da função: a: -1 (porque 'fase' é menor que 'fase2') e b: 0 (porque as strings são iguais). É a única alternativa que reflete corretamente a lógica da STRCMP.
Alternativa D — ❌ Incorreta
Afirma que a: 1, b: 0. O valor de b está correto (0), mas a está errado: 'fase' é menor que 'fase2', então o retorno deveria ser -1, não 1. Essa alternativa inverte o sinal da comparação, um erro clássico de quem confunde "menor" com "maior".
Alternativa E — ❌ Incorreta
Afirma que a: 1, b: -1. Ambos os valores estão errados: a deveria ser -1 (primeira menor) e b deveria ser 0 (iguais). Essa alternativa inverte completamente a lógica da função.