quarta-feira, 25 de janeiro de 2012

SQL Server 2008 - Manipulando Expressões no SQL Server


Nesta matéria começarei a abordar algumas das importantes características deste Banco de Dados. É interessante ressaltar que cada Banco de Dados possui suas características particulares, procurarei ser o mais claro e prático possível dando destaque para as principais expressões no SQL Server.

Utilizando Campos Calculados

Esta é uma característica muito utilizada, ou seja, um comando SELECT poderá retornar nas colunas um valor calculado. Por exemplo, suponha que exista uma tabela de produtos e que precisemos retornar seu valor + 25%, ficaria fácil. Veja abaixo a instrução SQL:

SELECT PRODUTO, VALOR, (VALOR*1.25) AS VALORCALCULADO FROM TBPRODUTOS

Poderia ser utilizada com as expressões de adição, subtração, divisão e multiplicação. Veja logo abaixo um exemplo bem simples:

SELECT (VALOR * QUANTIDADE) AS VALORCALCULADO FROM TBPRODUTOS

Multiplicamos o campo valor com o campo quantidade. Este mesmo mecanismo serve para todos os operadores matemáticos.

Utilizando Funções

Estudaremos algumas das principais funções, tais como: funções matemáticas, de caracteres e de Data/Hora.

Utilizaremos a Base de Dados chamada Northwind para eventuais testes. Este Banco de Dados já vem por padrão com o SQL Server.

Funções Matemáticas

Abs

Esta função retorna o valor absoluto de um número.

Exemplo: SELECT ABS(REPORTSTO) FROM EMPLOYEES

Power

Recebe dois parâmetros, o primeiro seria o valor a ser elevado e o segundo a quantidade de vezes que iremos multiplicar este valor. (Figura 01)

Exemplo: SELECT POWER(REPORTSTO,2) FROM EMPLOYEES

Figura 01. Exemplo de utilização da função Power.

Sqrt

Retorna a raiz quadrada de um determinado valor.

Exemplo: select SQRT(UNITSINSTOCK) FROM PRODUCTS

PI

Retornar o valor do PI.

Exemplo: SELECT PI() FROM TABELA

Round

Função para arredondar valores, recebe dois parâmetros, o valor a ser arredondado e a quantidade de casas decimais.

Exemplo: SELECT ROUND(FREIGHT,1) AS VALOR FROM ORDERS

Funções de Caracteres

A concatenação de campos é uma tarefa muito utilizada e simples de ser feita. Utiliza-se o sinal de + para fazer isto, veja abaixo um exemplo:

Exemplo: SELECT (FIRSTNAME + ' ' + LASTNAME) AS "NOME COMPLETO" FROM EMPLOYEES

Teremos um resultado semelhante ao da Figura 02.

Figura 02. Concatenando Campos.

Lower

Recebe como parâmetro uma string e a retorna com caracteres minúsculos.

Exemplo: SELECT LOWER(FIRSTNAME) AS "MINÚSCULAS" FROM EMPLOYEES

Obs: A função UPPER converte para maiúsculas.

Ltrim

Recebe como parâmetro uma string. Esta função tem como objetivo remover os espaços em brancos à esquerda de uma string.

Exemplo: SELECT LTRIM('       THECLUB') FROM TABELA

A Função RTRIM tem a mesma funcionalidade, o único diferencial é que os espaços em brancos removidos são da direita.

Replicate

Recebe como parâmetro uma string e a quantidade de vezes a ser repetida a mesma.

Exemplo: SELECT REPLICATE(FIRSTNAME,2) FROM EMPLOYEES

Substring

Esta é uma função de grande utilidade, retorna pedaços de uma string. Recebe três  parâmetros, sendo: a string, a posição inicial e a quantidade de caracteres a serem mostrados. 

Exemplo: SELECT SUBSTRING(FIRSTNAME,1,5) FROM EMPLOYEES

DataLength

Esta função tem como parâmetro de entrada uma string e de retorno a quantidade de caracteres da mesma.

Exemplo: SELECT DATALENGTH(FIRSTNAME) FROM EMPLOYEES

Funções de Data/Hora

Um detalhe importante é que as funções de data trabalham referenciando unidades de data. As mais comuns são:

- year (ano)
- month (mês)
- Day (dia)
Getdate
A função GETDATE retorna a data e a hora atuais do sistema. Podemos digitar o seguinte comando para obter a data e hora atual:
Exemplo: SELECT GETDATE()
DateAdd
Esta função DATEADD adiciona dias, meses ou anos em uma data. Recebe como primeiro parâmetro a unidade a ser adicionada, o segundo a quantidade e o terceiro o campo do tipo Data. Veja Figura 03.

Exemplo: SELECT DATEADD(YEAR,2, HIREDATE) “DATA” FROM EMPLOYEES

Figura 03. Função Dateadd.

Também poderia ser utilizada dateadd(month,2, hiredate) para adicionar meses a uma data ou dateadd(day,2,hiredate) para adicionar dias.

Datepart

A função DATEPART retorna a parte especificada de uma data como um inteiro. Recebe como parâmetro a unidade e o campo do tipo data.

Exemplos:

SELECT DATEPART(YEAR, HIREDATE) FROM EMPLOYEES
O resultado será o ano do campo hiredate.
                  
SELECT DATEPART(MONTH, HIREDATE) FROM EMPLOYEES
O resultado será o mês do campo hiredate.
                                    
SELECT DATEPART(DAY, HIREDATE) FROM EMPLOYEES        
O resultado será o dia do campo hiredate.
                 
Datediff 
A função DATEDIFF calcula a diferença entre duas datas retornando o resultado como um inteiro. Poderá retornar a diferença entre dias, meses ou anos.
Exemplos:

SELECT DATEDIFF(YEAR,BIRTHDATE,HIREDATE) FROM EMPLOYEES
O resultado será a diferença em anos destas duas datas.

SELECT DATEDIFF(MONTH,BIRTHDATE,HIREDATE) FROM EMPLOYEES
O resultado será a diferença em meses destas duas datas.
SELECT DATEDIFF(DAY,BIRTHDATE,HIREDATE) FROM EMPLOYEES
O resultado será a diferença em dias destas duas datas.

Convertendo dados

A função CONVERT permite converter um tipo de dado para outro. Recebe como
primeiro parâmetro o tipo de dado e o segundo o campo a ser convertido.

Exemplo:

SELECT CONVERT(CHAR,EMPLOYEEID) FROM EMPLOYEES
Neste exemplo irá converter campos do tipo numérico para char.

Conclusão

Procurei demonstrar nesta matéria um pouco das expressões mais utilizadas no SQL Server. O Help do mesmo é muito rico e abrangente, uma dica que deixo aqui seria a de procurar respostas no próprio Help, como sintaxes de funções, exemplos de utilizações entre outras coisas.

Sucesso e até a próxima pessoal!

Nenhum comentário:

Postar um comentário