Questão de Banco de Dados — MySQL — VUNESP 2023
- Código
- vu196122
- Banca
- VUNESP
- Órgão
- Pref Jaguariúna
- Ano
- 2023
- Cargo
- Tec (Jaguariúna)
- A\teste
- B\'teste
- Cteste
- D'\'teste
- E‘teste
GabaritoE — ‘teste
Gabarito: letra E. No MySQL, a barra invertida (\) é o caractere de escape padrão dentro de strings. No comando SELECT '\'teste';, a sequência \' é interpretada como uma aspa simples literal, e não como o delimitador de fim da string. Portanto, a string resultante é 'teste (aspa simples seguida de "teste"), que é exibida como 'teste.
O MySQL, por padrão, utiliza a barra invertida como caractere de escape em strings. Isso significa que certas sequências de caracteres são interpretadas de forma especial: \' representa uma aspa simples literal, \\ representa uma barra invertida literal, \n representa uma nova linha, \t representa uma tabulação, entre outras. Essa é uma característica que difere do padrão SQL ANSI, que não define a barra invertida como escape, mas o MySQL a adota por padrão (embora seja possível alterar esse comportamento com a variável de sistema NO_BACKSLASH_ESCAPES).
Vamos analisar o comando passo a passo:
A string começa com uma aspa simples: '.
Em seguida, temos \'. O MySQL lê a barra invertida e sabe que o próximo caractere (a aspa simples) deve ser tratado como um caractere literal, não como o fim da string.
Depois, temos teste.
A string termina com outra aspa simples: '.
Portanto, o conteúdo da string é: aspa simples + "teste" = 'teste. Quando o MySQL exibe o resultado de um SELECT de uma string, ele mostra o conteúdo sem as aspas delimitadoras. Assim, a saída será 'teste.
A pegadinha aqui é que muitos candidatos podem pensar que a barra invertida é exibida literalmente, ou que a aspa simples escapada ainda é interpretada como delimitador. Mas o comportamento correto é que \' produz uma aspa simples literal, e a barra invertida não aparece na saída.
Para fixar: no MySQL, \' dentro de uma string delimitada por aspas simples resulta em uma aspa simples no valor da string. A barra invertida é consumida pelo processo de escape e não faz parte do resultado.
Apresenta \teste, mantendo a barra invertida na saída. Isso ocorreria se a sequência fosse \\teste (barra invertida escapada), mas no comando original a barra invertida é usada para escapar a aspa, não a si mesma. Portanto, a barra não aparece no resultado.
Apresenta \'teste, incluindo tanto a barra quanto a aspa. Isso seria o resultado se a string fosse '\\'teste' (barra invertida literal seguida de aspa literal), mas não é o caso. No comando dado, a barra é o escape da aspa, então a barra é consumida.
Apresenta teste, sem a aspa inicial. Isso ocorreria se a string fosse 'teste' sem o escape, mas o comando inclui \' no início, que produz uma aspa literal. Portanto, a aspa faz parte do resultado.
Apresenta '\'teste, que é a representação literal do comando como texto, não o resultado da execução. O comando SELECT '\'teste'; é interpretado pelo MySQL, e a saída é o valor da string, não o comando em si.
A saída é 'teste, exatamente o que a string contém após o processamento do escape. A aspa simples escapada (\') é convertida em uma aspa simples literal, e a barra invertida não é exibida. Portanto, o resultado é a aspa seguida de "teste".
A banca explora a confusão entre o caractere de escape e o caractere literal. Muitos candidatos podem achar que a barra invertida aparece na saída, ou que a aspa escapada ainda delimita a string. Lembre-se: no MySQL, \' dentro de uma string produz uma aspa simples literal, e a barra é consumida. Com treino, você reconhece esse padrão rapidamente.
Gabarito: letra E
Link permanente: /questoes/vu196122