TOP

Lição SQL 7. Funções de processamento de dados

Como na maioria das linguagens de programação, o SQL possui funções para processamento de dados. Vale ressaltar que, diferentemente das instruções SQL, as funções não são padronizadas para todos os tipos de SGBD, ou seja, para realizar as mesmas operações nos dados, diferentes SGBDs possuem nomes de funções próprios. Isso significa que o código de consulta escrito em um SGBD pode não funcionar em outro, e isso deve ser levado em consideração no futuro. Isso se aplica principalmente a funções de processamento de valores de texto, conversão de tipos de dados e manipulação de datas.


A maioria dos SGBDs suporta um conjunto padrão de tipos de funções, a saber:

  • Funções de texto utilizadas para processamento de texto (extração de parte dos caracteres do texto, determinação do comprimento do texto, conversão de caracteres para maiúsculas ou minúsculas...);
  • Funções numéricas. Eles são usados para realizar operações matemáticas sobre valores numéricos;
  • Funções de data e hora (são realizadas manipulações de data e hora, o período entre as datas é calculado, as datas são verificadas quanto à exatidão, etc.);
  • Funções estatísticas (para cálculo de valores máximos/mínimos, valores médios, cálculo de quantidade e soma...);
  • Funções do sistema (fornecem vários tipos de informações de serviço sobre SGBD, usuário, etc.).
  • 1. Funções SQL para processamento de texto

    A implementação SQL em MS Access possui as seguintes funções para processamento de texto:

    Função Descrição
    Left() Seleciona os caracteres no texto da esquerda
    Right() Seleciona os caracteres no texto à direita
    Mid() Seleciona caracteres do meio do texto
    UCase() Converte caracteres para maiúsculas
    LCase() Converte caracteres para minúsculas
    LTrim() Remove todos os caracteres em branco à esquerda do texto
    RTrim() Remove todos os caracteres em branco à direita do texto
    Trim() Remove todos os caracteres em branco de ambos os lados do texto

    Vamos converter os nomes dos produtos para letras maiúsculas usando a função UCase():

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    Vamos destacar os três primeiros caracteres do texto usando a função LEFT():

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. Funções SQL para processamento de números

    As funções de processamento numérico são projetadas para realizar operações matemáticas em dados numéricos. Essas funções são projetadas para cálculos algébricos e geométricos, portanto são usadas com muito menos frequência do que funções de processamento de data e hora. No entanto, as funções numéricas são as mais padronizadas em todas as versões do SQL. Vejamos a lista de funções numéricas:

    Função Descrição
    SQR() Retorna a raiz quadrada do número especificado
    ABS() Retorna o valor absoluto de um número
    EXP() Retorna o expoente do número especificado
    SIN() Retorna o seno do ângulo especificado
    COS() Retorna o cosseno do ângulo especificado
    TAN() Retorna a tangente do ângulo especificado

    Listamos apenas alguns dos recursos principais, mas você sempre pode consultar a documentação do seu DBMS para obter uma lista completa dos recursos suportados com descrições detalhadas.

    Por exemplo, vamos escrever uma consulta para obter a raiz quadrada dos números na coluna Valor usando a função SQR():

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    MySQL usa a função SQRT() para obter a raiz quadrada de um número.

    3. Funções SQL para processamento de data e hora

    As funções de manipulação de data e hora estão entre as funções SQL mais importantes e usadas com frequência. Nos bancos de dados, os valores de data e hora são armazenados em um formato especial, portanto não podem ser usados diretamente sem processamento adicional. Cada SGBD possui seu próprio conjunto de funções para processamento de datas, o que, infelizmente, não permite sua transferência para outras plataformas e implementações SQL.

    Lista de algumas funções para tratamento de data e hora em MS Access:

    Função Descrição
    DatePart() Retorna parte de uma data: ano, trimestre, mês, semana, dia, hora, minuto, segundo
    Year(), Month() Retorna o ano e o mês respectivamente
    Hour(), Minute(), Second() Retorna a hora, minutos e segundos da data especificada
    WeekdayName() Retorna o nome do dia da semana

    Vejamos um exemplo de como funciona a função DatePart():

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    A função DatePart() possui um parâmetro adicional que nos permite exibir a parte necessária da data. No exemplo, utilizamos o valor do parâmetro "m", que exibe o número do mês (da mesma forma, podemos exibir o ano - "aaaa", o trimestre - "q", o dia - "d", a semana - "w", a hora - "h", minutos - "n", segundos - "s", etc.).

    4. Funções estatísticas SQL

    As funções estatísticas nos ajudam a obter dados prontos sem amostrá-los. Consultas SQL com essas funções são frequentemente usadas para analisar e gerar vários relatórios. Um exemplo de tais seleções pode ser: determinar o número de linhas de uma tabela, obter a soma dos valores de um determinado campo, buscar o valor maior/menor ou médio na coluna especificada da tabela. Observamos também que as funções estatísticas são suportadas por todos os SGBDs sem quaisquer alterações especiais por escrito.

    Lista de funções estatísticas em DBMS Access:

    Função Descrição
    COUNT() Retorna o número de linhas de uma tabela ou coluna
    SUM() Retorna a soma dos valores de uma coluna
    MIN() Retorna o menor valor de uma coluna
    MAX() Retorna o maior valor de uma coluna
    AVG() Retorna o valor médio em uma coluna

    4.1 Exemplos de uso da função COUNT()

    Retorna o número de todas as linhas da tabela:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Retorna o número de todas as linhas não vazias no campo Produto:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    Removemos intencionalmente um valor da coluna Produto para mostrar a diferença de desempenho entre as duas consultas.

    4.2 Exemplos de uso da função SUM()

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    Com esta solicitação, exibimos a quantidade total de mercadorias vendidas no mês de abril.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    Como você pode ver, em funções estatísticas também podemos realizar cálculos em diversas colunas usando operadores matemáticos padrão.

    4.3 Exemplo de uso da função MIN()

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 Exemplo de uso da função MAX()

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 Exemplo de uso da função AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct