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 ?