Para calcular o número de produtos com nomes que terminam co . . .
Exercício 5
Para calcular o número de produtos com nomes que terminam com a letra B, o Auditor testou os comandos abaixo.
- I.
SELECT COUNT(nomePro)
FROM Produto
WHERE nomePro BEGIN '%B'; - II.
SELECT COUNT(*)
FROM PRODUTO
WHERE SUBSTR(nomePro, -1)='B'; - III.
SELECT COUNT(*)
FROM Produto
WHERE nomePro LIKE '%B'; - IV.
SELECT COUNT(nomePro)
FROM Produto
WHERE SUBSTR(nomePro, 0)='B';
Mostrará o resultado desejado o que consta APENAS em:
Resolução
Parte 1 da resolução
Para iniciar a resolução deste exercício é importante entender que COUNT
é uma das funções de agregação disponibilizadas pela linguagem SQL que tem com objetivo contabilizar a quantidade de linhas de um determinado grupo de dados.
Entre as alternativas há duas formas corretas de se utilizar a instrução COUNT
, o comando COUNT(*) realizará a contabilização do número de linhas retornado pela query e
COUNT(nomePro)
realizará a contabilização do números de linhas retornado somente para a coluna nomePro. Supondo que a quantidade de registros seja igual em ambos os casos, COUN(*)
e COUNT(nomePro)
terão o mesmo resultado.
A partir desta primeira análise da instrução COUNT
ainda não é possível identificar qual a alternativa correta.
Parte 2 da resolução
Verificando a cláusula WHERE
das alternativas é possível eliminar a Letra B e D pois o comando BEGIN
é um tipo de comando DTL(Data Transaction Language ou Linguagem de Transação de Dados) e no exercício cabe somente comandos DML(Data Manipulation Language ou Linguagem de Manipulação de Dados)
A instrução LIKE
é usada em cláusulas WHERE
para localizar registros de acordo com um determinado padrão, padrão que é definido por meio dos wildcars '%' e '_' conforme exemplos abaixo utilizando o wildcard '%':
- Encontrar qualquer registro que começa com a letra B.
SELECT coluna FROM tabela WHERE coluna LIKE 'B%'
- Encontrar qualquer registro que termina com a letra B.
SELECT coluna FROM tabela WHERE coluna LIKE '%B'
- Encontrar qualquer registro que contenha a letra B em qualquer posição.
SELECT coluna FROM tabela WHERE coluna LIKE '%B%'
- Encontrar qualquer registro que contenha começa com a letra B e termina com a letra C.
SELECT coluna FROM tabela WHERE coluna LIKE 'B%C'
Com base na análise acima da instrução LIKE
chega-se a conclusão que o item III está correto.
Parte 3 da resolução
Por fim, para se chegar a resposta Letra E itens II e III corretos, é necessário saber que SUBSTR
é uma instrução que tem como finalidade extrair um trecho da string original tendo como parâmetro um início, um tamanho opcional e a string original. Se o tamanho que se deseja extrair não for informado como parâmetro de SUBSTR
o comando terá como retorno uma substring a partir do início informado até o final da string.
Para exemplificar suponha a tabela PESSOA abaixo com os campo ID e NOME:
ID | NOME |
---|---|
1 | Afonso Pereira Najib |
2 | Breno da Costa Alves |
Na query SELECT NOME, SUBSTR(NOME, -1) as SUB FROM PESSOA WHERE SUBSTR(NOME, -1)='B'
temos como resultado "Afonso Pereria Najib, b" ,enquanto que na query SELECT NOME, SUBSTR(nomePro, 0) as SUB FROM PESSOA WHERE SUBSTR(nomePro, 0)='B'
nenhum resultado foi exibido.
Observação: O exercício não especificou qual SGBD foi utilizado para realizar a consulta, mas pode sabe-se que no ORACLE e MySQL a sintaxe é SUBSTR
e no SqlServer e PostgreSQL a sintaxe é SUBSTRING
.
Resolva também as questões relacionadas abaixo sobre SQL.
Na linguagem SQL, considerando duas tabelas A e B, para se obter o que está na Tabela A e não está n ...
Um programador deseja definir uma query SQL para retornar os valores das colunas salario e job_id pa ...
Os comandos DTL são responsáveis por gerenciar diferentes transações ocorridas dentro de um
Veja também as perguntas respondidas abaixo.
O que é uma SQL ANSI ?
Quem criou o SQL ?
O que faz um comando select ?