Questão nº 25
Questão de Tecnologia da Informação · FCC TRT22 2022 (nº 25)
Considere que em um banco de dados Oracle 19c, aberto e funcionando em condições ideais, exista a tabela TRTVaras:

Para que as cidades cujos CodCidade comecem com 2 tenham a Jurisdicao alterada de Parnaíba para Teresina, deve-se utilizar o seguinte comando PL/SQL:
- A`UPDATE TRTVaras SET Jurisdicao = 'Teresina' WHERE REGEXP_LIKE (CodCidade, '2%');`
- B`UPDATE TRTVaras SET Jurisdicao = "Teresina" WHERE LIKE (CodCidade, "2%");`
- C`UPDATE TRTVaras WHERE Jurisdicao = 'Parnaíba' SET INTO 'Teresina';`
- D`UPDATE TRTVaras WHERE REGEXP_LIKE (CodCidade, '^2(*)' SET Jurisdicao = 'Teresina');`
- E`UPDATE TRTVaras SET Jurisdicao = 'Teresina' WHERE REGEXP_LIKE (CodCidade, '^2(*)');` (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Para modificar dados em uma tabela, usamos o comando UPDATE, que nos permite definir novos valores para colunas (SET) em linhas específicas, filtradas por uma condição (WHERE). Para condições de texto mais complexas, como "começa com" ou "contém um padrão", podemos usar expressões regulares com a função REGEXP_LIKE.
- (A) Incorreta: O padrão
'2%'é um curinga (wildcard) para o operadorLIKE, não paraREGEXP_LIKE. EmREGEXP_LIKE, o caractere%é interpretado literalmente, significando que esta consulta buscariaCodCidadeque começassem com '2' e fossem seguidos pelo caractere literal '%', o que não é o objetivo. Armadilha da banca: Misturar a sintaxe deLIKEcomREGEXP_LIKEé um erro comum. - (B) Incorreta: Em Oracle, strings literais (como 'Teresina' ou '2%') devem ser delimitadas por aspas simples (
'). O uso de aspas duplas (") é para identificadores (nomes de tabelas, colunas) que precisam ser case-sensitive ou contêm caracteres especiais. Portanto,"Teresina"e"2%"estão sintaticamente incorretos como literais de string. - (C) Incorreta: A sintaxe do comando
UPDATEestá incorreta. A cláusulaSETdeve vir antes da cláusulaWHERE, e o uso deINTOpara atribuição de valor não se aplica aoUPDATE. A estrutura correta éUPDATE tabela SET coluna = valor WHERE condição;. Além disso, a condiçãoWHERE Jurisdicao = 'Parnaíba'não atende ao requisito de filtrar porCodCidade. - (D) Incorreta: A ordem das cláusulas está errada; a cláusula
SETdeve vir antes daWHERE. Além disso, o padrão de expressão regular^2(*)é sintaticamente inválido ou, no mínimo, não é a forma padrão de expressar "começa com 2 e tem qualquer coisa depois". O(*)sozinho é problemático. - (E) Correta: O comando
UPDATE TRTVaras SET Jurisdicao = 'Teresina'define corretamente o novo valor para a colunaJurisdicao. A cláusulaWHERE REGEXP_LIKE (CodCidade, '^2(*)')utiliza a funçãoREGEXP_LIKEpara filtrar as linhas. O padrão^2(*)significa:^(âncora de início de string) seguido por2(o caractere literal '2'), e(*)que, embora não seja a forma mais comum (^2.*seria mais idiomático para "começa com 2 e tem qualquer coisa depois"), em Oracle,(*)é interpretado como "zero ou mais ocorrências de um grupo vazio", o que permite que a string '2' no início seja correspondida, satisfazendo a condição "comecem com 2".
Fonte: FCC TRT22 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.