Rodrigo Kiyoshi Saito / rodrigok@anchieta.br
BANCO DE DADOS I
Tópicos abordados
• Funções SQL;
• Funções de uma única linha;
• Funções de várias linhas;
• Funções de manipulação de caracteres;
• Funções de conversão maiúsculo /
minúsculo;
• Funções numéricas;
Tópicos abordados
• Round;
• Trunc (Round);
• Mod;
• Trabalhando com datas
• Conversão de tipos de dados
FUNÇÕES SQL
• As funções são um recurso avançado do SQL e
podem ser usadas para realizar:
– Executar cálculos usando dados;
– Modificar itens de dados individuais;
– Manipular saída para grupos de linhas;
– Formatar datas e números para exibição;
– Converter tipos de dados de coluna;
FUNÇÕES SQL
• As funções SQL podem aceitar argumentos e
sempre retornar um valor;
• Há dois tipos de funções:
– Funções de uma única linha;
– Funções de várias linhas;
FUNÇÕES DE UMA ÚNICA
LINHA
• Essas funções operam somente linhas únicas e
retornam um resultado por linha. Há dois
tipos diferentes de funções de uma única
linha.
– Caractere;
– Número;
– Data;
– Conversão;
FUNÇÕES DE VÁRIAS
LINHAS
• Essas funções manipulam grupos de linha a
fim de obter um resultado por grupo de
linhas.
FUNÇÕES DE UMA ÚNICA
LINHA
• Manipulam itens de dados;
• Aceitam argumentos e retornam um valor;
• Agem em cada linha retornada;
• Retornam um resultado por linha;
• Podem modificar o tipo de dados;
• Podem ser aninhadas;
FUNÇÕES DE UMA ÚNICA
LINHA
• Um argumento pode ser:
– Constante fornecida pelo usuário;
– Valor variável;
– Nome da coluna;
– Expressão;
FUNÇÕES DE UMA ÚNICA
LINHA
• Os recursos de funções de uma única linha:
– Atuam em cada linha retornada na consulta;
– Retornam um resultado por linha;
– Podem retornar um valor de dados de um tipo
diferente do mencionado;
– Podem esperar um ou mais argumentos;
– Podem ser usados em cláusulas SELECT, WHERE e
ORDER BY; podem ser aninhados;
FUNÇÕES DE UMA ÚNICA
LINHA
• Funções de caractere: aceitam entrada de
caractere e podem retornar valores de
número e caractere;
• Funções numéricas: aceitam entrada
numérica e reotrnam valores numéricos;
FUNÇÕES DE UMA ÚNICA
LINHA
• Funções de conversão: Convertem um valor
de tipo de dados para outro;
• Funções gerais:
– Função ISNULL;
– Função CASE;
FUNÇÕES DE UMA ÚNICA
LINHA
SELECT ISNULL(NULL,0);
SELECT
CASE DATA
WHEN '0' THEN 'ZERO'
WHEN '1' THEN 'UM'
END AS EXTENSO
FROM (SELECT 0 AS DATA
UNION ALL
SELECT 1 AS DATA ) AS TB;
FUNÇÕES DE CARACTERE
• Podem ser divididas em duas características:
– Funções de conversão de maiúscula e minúscula;
• LOWER e UPPER
– Funções de manipulação de caractere;
• + (Concatenação), SUBSTRING, LEN, CHARINDEX, LEFT,
RIGHT, TRIM, LTRIM, RTRIM
FUNÇÕES DE CONVERSÃO
DE MAIÚSCULAS /
MINÚSCULAS
• LOWER: Converte string de caracteres com
letras maiúsculas e minúsculas ou só
maiúsculas para letras minúsculas;
• UPPER: Converte string de caracteres com
letras maiúculas e minúsculas ou só
minúsculas para letras maiúsculas;
FUNÇÕES DE CONVERSÃO
DE MAIÚSCULAS /
MINÚSCULAS
SELECT UPPER('new york');
SELECT LOWER('NEW YORK');
FUNÇÕES DE CONVERSÃO
DE MAIÚSCULAS /
MINÚSCULAS
USE HR
GO
SELECT UPPER(DEPARTMENT_NAME)
FROM DEPARTMENTS
WHERE UPPER(DEPARTMENT_NAME) LIKE '%A%';
GO
FUNÇÕES DE
MANIPULAÇÃO DE
CARACTERE
• + (concatenar), SUBSTRING, LEN, CHARINDEX,
LEFT, RIGHT e TRIM, LTRIM e RTRIM são
funções de manipulação de caractere;
• + (concatenar): Une valores de junção;
• SUBSTRING: Extrai uma string de determinado
tamanho;
SELECT 'NEW' + 'YORK'
SELECT SUBSTRING('NEW YORK',1,1);
FUNÇÕES DE
MANIPULAÇÃO DE
CARACTERE
• LEN: Exibe o tamanho de uma string como um
valor numérico;
• CHARINDEX: Localiza a posição numérica do
caractere nomeado;
• LEFT e RIGHT: Pega uma substring com o
tamanho especificado do lado especificado;
• REPLICATE: Preenche o valor de caractere com
uma determinada quantidade;
FUNÇÕES DE
MANIPULAÇÃO DE
CARACTERE
SELECT LEN('NEW YORK');
SELECT CHARINDEX('Y','NEW YORK',0)
SELECT LEFT('NEW YORK',2)
SELECT RIGHT('NEW YORK',2)
SELECT REPLICATE('0',5);
FUNÇÕES DE
MANIPULAÇÃO DE
CARACTERE
• TRIM, LTRIM e RTRIM: Tira caracteres em
branco de ambos lados, ou só da esquerda ou
só da direita da string;
SELECT TRIM(' NEW YORK ')
SELECT LTRIM(' NEW YORK ')
SELECT RTRIM(' NEW YORK ')
FUNÇÕES DE
MANIPULAÇÃO DE
CARACTERE
USE HR
GO
SELECT LAST_NAME + ' ' + FIRST_NAME,
LEN(LAST_NAME),
CHARINDEX('J', FIRST_NAME,2)
FROM EMPLOYEES
WHERE SUBSTRING(FIRST_NAME,1,2) = 'JO'
GO
FUNÇÕES NUMÉRICAS
• ROUND: Arredonda valor para determinado
decimal;
ROUND(45.926,2)  45.93
• TRUNC: Trunca valor para determinado
decimal;
ROUND(45.926,2,1)  45.92
• MOD: Retorna o restante da divisão;
SELECT 1600 % 300  100
USANDO A FUNÇÃO
ROUND E MOD
--ROUND
SELECT ROUND(45.926,2)
SELECT ROUND(45.925,2)
SELECT ROUND(45.924,2)
--TRUNC
SELECT ROUND(45.926,2,1)
SELECT ROUND(45.929,2,1)
--MODULUS
SELECT 1600 % 300
TRABALHANDO COM DATAS
• O SQL Server armazena datas em um formato
numérico interno: ano, mês, dia, horas,
minutos, segundo, centesimos de segundo;
• O formato de data default é YYYYMMDD;
• GETDATE() é uma função de retorno de data e
hora;
• O SQL Server não exige uma tabela para se
fazer uma select;
EXIBINDO A DATA ATUAL
SELECT GETDATE()
ARITMÉTICA COM DATAS
• Para adicionar ou subtrair dias de uma data,
Podemos utilizer mais ou menos a quantidade
de dias;
SELECT GETDATE() + 5
SELECT GETDATE() - 2
USANDO OPERADORES
ARITMÉTICOS COM DATAS
--ADICIONANDO OU SUBTRAINDO ANO, MESES, DIAS
SELECT DATEADD(YYYY,1,GETDATE())
SELECT DATEADD(YYYY,-1,GETDATE())
SELECT DATEADD(MM,1,GETDATE())
SELECT DATEADD(DD,1,GETDATE())
--ADICIOMANDO UMA SEMANA
SELECT DATEADD(WK,1,GETDATE())
--ADICIMANDO HORAS, MINUTOS E SEGUNDOS
SELECT DATEADD(HH,1,GETDATE())
SELECT DATEADD(MI,1,GETDATE())
SELECT DATEADD(SS,1,GETDATE())
FORMATANDO DATAS
• É possivel fazer formatação em alguns padrões
existentes no SQL Server:
--FORMATACAO DE DADOS NO SQL SERVER
SELECT CONVERT(VARCHAR(10), GETDATE(), 101)
SELECT CONVERT(VARCHAR(10), GETDATE(), 102)
SELECT CONVERT(VARCHAR(10), GETDATE(), 103)
Referência: https://docs.microsoft.com/pt-br/sql/t-
sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15
CONVERSÃO IMPLÍCITA
DE TIPOS DE DADOS
• O SQL Server consegue fazer a conversão de
dados para o usuário, sem que ele (usuário)
precise fazer intervenção através de funções;
CONVERSÃO EXPLICITA
DE TIPOS DE DADOS
• É quando o usuário faz a conversão de dados
utilizando commandos do T-SQL, a qual o SQL
Server executa imeditamente o commando
sem precisar interpreta;
• Sempre que possível utilize conversão de
dados explicita;
CONVERSÃO EXPLÍCITA DE
TIPO DE DADOS
CAST e CONVERT são os comandos para
transformer um dado em outro tipo;
-- CAST Syntax:
CAST ( expression AS data_type [ ( length ) ] )
-- CONVERT Syntax:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
CONVERSÃO EXPLÍCITA DE
TIPO DE DADOS
-- INTEIRO PARA CHAR
SELECT CAST(1 AS VARCHAR)
--VARCHAR PARA INTEIRO
SELECT CAST('10' AS INTEGER)
--INTEIRO PARA VARCHAR
SELECT CONVERT(VARCHAR, 1)
--VARCHAR PARA INTEIRO
SELECT CONVERT(INT, '20')
--VARCHAR PARA DATA
SELECT CAST('20191030' AS DATE)
--DATA PARA VARCHAR
SELECT CAST( CAST('20191030' AS DATE) AS VARCHAR)
--MONETARIO PARA VARCHAR
SELECT CAST(1001.23 AS VARCHAR)
--VARCHAR PARA MONETARIO
SELECT CAST('1001.23' AS MONEY)

BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03

  • 1.
    Rodrigo Kiyoshi Saito/ rodrigok@anchieta.br BANCO DE DADOS I
  • 2.
    Tópicos abordados • FunçõesSQL; • Funções de uma única linha; • Funções de várias linhas; • Funções de manipulação de caracteres; • Funções de conversão maiúsculo / minúsculo; • Funções numéricas;
  • 3.
    Tópicos abordados • Round; •Trunc (Round); • Mod; • Trabalhando com datas • Conversão de tipos de dados
  • 4.
    FUNÇÕES SQL • Asfunções são um recurso avançado do SQL e podem ser usadas para realizar: – Executar cálculos usando dados; – Modificar itens de dados individuais; – Manipular saída para grupos de linhas; – Formatar datas e números para exibição; – Converter tipos de dados de coluna;
  • 5.
    FUNÇÕES SQL • Asfunções SQL podem aceitar argumentos e sempre retornar um valor; • Há dois tipos de funções: – Funções de uma única linha; – Funções de várias linhas;
  • 6.
    FUNÇÕES DE UMAÚNICA LINHA • Essas funções operam somente linhas únicas e retornam um resultado por linha. Há dois tipos diferentes de funções de uma única linha. – Caractere; – Número; – Data; – Conversão;
  • 7.
    FUNÇÕES DE VÁRIAS LINHAS •Essas funções manipulam grupos de linha a fim de obter um resultado por grupo de linhas.
  • 8.
    FUNÇÕES DE UMAÚNICA LINHA • Manipulam itens de dados; • Aceitam argumentos e retornam um valor; • Agem em cada linha retornada; • Retornam um resultado por linha; • Podem modificar o tipo de dados; • Podem ser aninhadas;
  • 9.
    FUNÇÕES DE UMAÚNICA LINHA • Um argumento pode ser: – Constante fornecida pelo usuário; – Valor variável; – Nome da coluna; – Expressão;
  • 10.
    FUNÇÕES DE UMAÚNICA LINHA • Os recursos de funções de uma única linha: – Atuam em cada linha retornada na consulta; – Retornam um resultado por linha; – Podem retornar um valor de dados de um tipo diferente do mencionado; – Podem esperar um ou mais argumentos; – Podem ser usados em cláusulas SELECT, WHERE e ORDER BY; podem ser aninhados;
  • 11.
    FUNÇÕES DE UMAÚNICA LINHA • Funções de caractere: aceitam entrada de caractere e podem retornar valores de número e caractere; • Funções numéricas: aceitam entrada numérica e reotrnam valores numéricos;
  • 12.
    FUNÇÕES DE UMAÚNICA LINHA • Funções de conversão: Convertem um valor de tipo de dados para outro; • Funções gerais: – Função ISNULL; – Função CASE;
  • 13.
    FUNÇÕES DE UMAÚNICA LINHA SELECT ISNULL(NULL,0); SELECT CASE DATA WHEN '0' THEN 'ZERO' WHEN '1' THEN 'UM' END AS EXTENSO FROM (SELECT 0 AS DATA UNION ALL SELECT 1 AS DATA ) AS TB;
  • 14.
    FUNÇÕES DE CARACTERE •Podem ser divididas em duas características: – Funções de conversão de maiúscula e minúscula; • LOWER e UPPER – Funções de manipulação de caractere; • + (Concatenação), SUBSTRING, LEN, CHARINDEX, LEFT, RIGHT, TRIM, LTRIM, RTRIM
  • 15.
    FUNÇÕES DE CONVERSÃO DEMAIÚSCULAS / MINÚSCULAS • LOWER: Converte string de caracteres com letras maiúsculas e minúsculas ou só maiúsculas para letras minúsculas; • UPPER: Converte string de caracteres com letras maiúculas e minúsculas ou só minúsculas para letras maiúsculas;
  • 16.
    FUNÇÕES DE CONVERSÃO DEMAIÚSCULAS / MINÚSCULAS SELECT UPPER('new york'); SELECT LOWER('NEW YORK');
  • 17.
    FUNÇÕES DE CONVERSÃO DEMAIÚSCULAS / MINÚSCULAS USE HR GO SELECT UPPER(DEPARTMENT_NAME) FROM DEPARTMENTS WHERE UPPER(DEPARTMENT_NAME) LIKE '%A%'; GO
  • 18.
    FUNÇÕES DE MANIPULAÇÃO DE CARACTERE •+ (concatenar), SUBSTRING, LEN, CHARINDEX, LEFT, RIGHT e TRIM, LTRIM e RTRIM são funções de manipulação de caractere; • + (concatenar): Une valores de junção; • SUBSTRING: Extrai uma string de determinado tamanho; SELECT 'NEW' + 'YORK' SELECT SUBSTRING('NEW YORK',1,1);
  • 19.
    FUNÇÕES DE MANIPULAÇÃO DE CARACTERE •LEN: Exibe o tamanho de uma string como um valor numérico; • CHARINDEX: Localiza a posição numérica do caractere nomeado; • LEFT e RIGHT: Pega uma substring com o tamanho especificado do lado especificado; • REPLICATE: Preenche o valor de caractere com uma determinada quantidade;
  • 20.
    FUNÇÕES DE MANIPULAÇÃO DE CARACTERE SELECTLEN('NEW YORK'); SELECT CHARINDEX('Y','NEW YORK',0) SELECT LEFT('NEW YORK',2) SELECT RIGHT('NEW YORK',2) SELECT REPLICATE('0',5);
  • 21.
    FUNÇÕES DE MANIPULAÇÃO DE CARACTERE •TRIM, LTRIM e RTRIM: Tira caracteres em branco de ambos lados, ou só da esquerda ou só da direita da string; SELECT TRIM(' NEW YORK ') SELECT LTRIM(' NEW YORK ') SELECT RTRIM(' NEW YORK ')
  • 22.
    FUNÇÕES DE MANIPULAÇÃO DE CARACTERE USEHR GO SELECT LAST_NAME + ' ' + FIRST_NAME, LEN(LAST_NAME), CHARINDEX('J', FIRST_NAME,2) FROM EMPLOYEES WHERE SUBSTRING(FIRST_NAME,1,2) = 'JO' GO
  • 23.
    FUNÇÕES NUMÉRICAS • ROUND:Arredonda valor para determinado decimal; ROUND(45.926,2)  45.93 • TRUNC: Trunca valor para determinado decimal; ROUND(45.926,2,1)  45.92 • MOD: Retorna o restante da divisão; SELECT 1600 % 300  100
  • 24.
    USANDO A FUNÇÃO ROUNDE MOD --ROUND SELECT ROUND(45.926,2) SELECT ROUND(45.925,2) SELECT ROUND(45.924,2) --TRUNC SELECT ROUND(45.926,2,1) SELECT ROUND(45.929,2,1) --MODULUS SELECT 1600 % 300
  • 25.
    TRABALHANDO COM DATAS •O SQL Server armazena datas em um formato numérico interno: ano, mês, dia, horas, minutos, segundo, centesimos de segundo; • O formato de data default é YYYYMMDD; • GETDATE() é uma função de retorno de data e hora; • O SQL Server não exige uma tabela para se fazer uma select;
  • 26.
    EXIBINDO A DATAATUAL SELECT GETDATE()
  • 27.
    ARITMÉTICA COM DATAS •Para adicionar ou subtrair dias de uma data, Podemos utilizer mais ou menos a quantidade de dias; SELECT GETDATE() + 5 SELECT GETDATE() - 2
  • 28.
    USANDO OPERADORES ARITMÉTICOS COMDATAS --ADICIONANDO OU SUBTRAINDO ANO, MESES, DIAS SELECT DATEADD(YYYY,1,GETDATE()) SELECT DATEADD(YYYY,-1,GETDATE()) SELECT DATEADD(MM,1,GETDATE()) SELECT DATEADD(DD,1,GETDATE()) --ADICIOMANDO UMA SEMANA SELECT DATEADD(WK,1,GETDATE()) --ADICIMANDO HORAS, MINUTOS E SEGUNDOS SELECT DATEADD(HH,1,GETDATE()) SELECT DATEADD(MI,1,GETDATE()) SELECT DATEADD(SS,1,GETDATE())
  • 29.
    FORMATANDO DATAS • Épossivel fazer formatação em alguns padrões existentes no SQL Server: --FORMATACAO DE DADOS NO SQL SERVER SELECT CONVERT(VARCHAR(10), GETDATE(), 101) SELECT CONVERT(VARCHAR(10), GETDATE(), 102) SELECT CONVERT(VARCHAR(10), GETDATE(), 103) Referência: https://docs.microsoft.com/pt-br/sql/t- sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15
  • 30.
    CONVERSÃO IMPLÍCITA DE TIPOSDE DADOS • O SQL Server consegue fazer a conversão de dados para o usuário, sem que ele (usuário) precise fazer intervenção através de funções;
  • 31.
    CONVERSÃO EXPLICITA DE TIPOSDE DADOS • É quando o usuário faz a conversão de dados utilizando commandos do T-SQL, a qual o SQL Server executa imeditamente o commando sem precisar interpreta; • Sempre que possível utilize conversão de dados explicita;
  • 32.
    CONVERSÃO EXPLÍCITA DE TIPODE DADOS CAST e CONVERT são os comandos para transformer um dado em outro tipo; -- CAST Syntax: CAST ( expression AS data_type [ ( length ) ] ) -- CONVERT Syntax: CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
  • 33.
    CONVERSÃO EXPLÍCITA DE TIPODE DADOS -- INTEIRO PARA CHAR SELECT CAST(1 AS VARCHAR) --VARCHAR PARA INTEIRO SELECT CAST('10' AS INTEGER) --INTEIRO PARA VARCHAR SELECT CONVERT(VARCHAR, 1) --VARCHAR PARA INTEIRO SELECT CONVERT(INT, '20') --VARCHAR PARA DATA SELECT CAST('20191030' AS DATE) --DATA PARA VARCHAR SELECT CAST( CAST('20191030' AS DATE) AS VARCHAR) --MONETARIO PARA VARCHAR SELECT CAST(1001.23 AS VARCHAR) --VARCHAR PARA MONETARIO SELECT CAST('1001.23' AS MONEY)