Pular para o conteúdo principal

Questão de Banco de Dados — PL-SQL — FCC 2018

Banco de DadosPL-SQL
Código
fc050786
Banca
FCC
Órgão
TRT - 2ª REGIÃO (SP)
Ano
2018
Cargo
Analista Judiciário - Tecnologia da Informação
Para criar uma consulta que pesquise na tabela Trabalhadores de um banco de dados aberto e em condições ideais todos os nomes e telefones de trabalhadores cujos nomes sejam Sofia ou Sophia, um Analista de Sistemas deve utilizar a instrução PL/SQL SELECT nome, telefone FROM Trabalhadores WHERE
  1. AREGEXP_LIKE (nome, '^So(f|ph)ia$');
  2. Bnome ='^So(f|ph)ia$';
  3. Cnome CONTAINS('^So(f|ph)ia$');
  4. Dnome REGEXP('%So(f|ph)ia%');
  5. EREGEXP(nome, '%So(f|ph)ia%');
Revelar gabarito e comentário

GabaritoA — REGEXP_LIKE (nome, '^So(f|ph)ia$');

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”.

PL/SQL: Expressões Regulares (REGEXP_LIKE)

Gabarito: letra A. Para consultar nomes exatamente "Sofia" ou "Sophia", a instrução correta em Oracle PL/SQL utiliza a função REGEXP_LIKE com a expressão regular '^So(f|ph)ia$', que ancora o início (^) e o fim ($) e permite apenas as variações f ou ph. As demais alternativas misturam sintaxe de operador LIKE com expressões regulares ou usam funções inexistentes.

A banca testa o conhecimento da função específica para expressões regulares no Oracle PL/SQL, que é REGEXP_LIKE (ou REGEXP_INSTR para posição), e não operadores como LIKE ou CONTAINS. A expressão regular deve usar metacaracteres como ^, $, | (pipe) e () para grupos, e não curingas do LIKE como %.

1Função correta
REGEXP_LIKE
REGEXP_INSTR (posição)
2Metacaracteres
^ (início)
$ (fim)
| (ou)
() (grupo)
3Operadores incorretos
= (igualdade literal)
CONTAINS (texto completo)
REGEXP (função inexistente)
4Curingas do LIKE
% (qualquer sequência)
_ (um caractere)
Não funcionam em REGEXP_LIKE
Expressões regulares no Oracle PL/SQL
LEVELsoulevel.com.br
Expressões regulares no Oracle PL/SQL: Função correta (REGEXP_LIKE, REGEXP_INSTR (posição)); Metacaracteres (^ (início), $ (fim), | (ou), () (grupo)); Operadores incorretos (= (igualdade literal), CONTAINS (texto completo), REGEXP (função inexistente)); Curingas do LIKE (% (qualquer sequência), _ (um caractere), Não funcionam em REGEXP_LIKE)

Alternativa A — ✅ Correta ⟵ GABARITO

Utiliza a função REGEXP_LIKE com a expressão regular '^So(f|ph)ia$'. O circunflexo ^ ancora o início da string, o cifrão $ ancora o final, e (f|ph) permite que o terceiro caractere seja f ou a sequência ph. Assim, a condição é verdadeira apenas para "Sofia" ou "Sophia", exatamente como pedido.

Alternativa B — ❌ Incorreta

Usa o operador de igualdade =, que compara literalmente a string. O valor '^So(f|ph)ia$' não é interpretado como padrão, mas sim como texto literal. Nenhuma linha com nome "Sofia" atenderia, pois o nome não contém os caracteres ^, (, |, etc.

Alternativa C — ❌ Incorreta

A função CONTAINS é usada em Oracle para buscas em índices de texto completo (Oracle Text), não para expressões regulares. Além disso, a sintaxe está incorreta: deveria ser CONTAINS(nome, '...') e, mesmo assim, não atenderia ao padrão desejado.

Alternativa D — ❌ Incorreta

A sintaxe nome REGEXP(...) não existe em PL/SQL. A função correta é REGEXP_LIKE. Além disso, o padrão '%So(f|ph)ia%' usa o curinga %, que é do operador LIKE, dentro de uma expressão regular. Em regex, % representa o próprio caractere '%', não um curinga. Para corresponder a qualquer sequência, usar-se-ia .*.

Alternativa E — ❌ Incorreta

Novamente, REGEXP isoladamente não é uma função válida. O correto é REGEXP_LIKE. O padrão '%So(f|ph)ia%' também mistura curingas do LIKE com grupos de regex, o que não funciona. Além disso, a função REGEXP(nome, ...) não é nativa do Oracle.

NÃO CAIA NESSA!

A banca explora a confusão entre os curingas do LIKE (%) e os metacaracteres de regex (.*). O candidato pode achar que % funciona em regex, mas não: em regex, % é literal. Lembre-se: no Oracle PL/SQL, use REGEXP_LIKE para comparar padrões regex, e sempre ancore com ^...$ se quiser correspondência exata.

Gabarito: letra A.

Link permanente: /questoes/fc050786