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:
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
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
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.).
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 |
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.
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.
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct