Funções do SQL Server 2000

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (12)  (0)

Veja neste artigo uma compilação de grande parte das funções do SQL Server 2000.

Funções escalares

 

Nessa matéria, apresento uma compilação de grande parte das funções do SQL Server 2000.

 

      LISTAGEM 01 – CRIAÇÃO DO AMBIENTE

--EM ALGUNS EXEMPLOS, USAREMOS A TABELA CRIADA ABAIXO

 

SET NOCOUNT ON

 

USE MASTER

GO

 

IF EXISTS(SELECT 1 FROM SYSDATABASES WHERE NAME = 'EXEMPLOS')

      DROP DATABASE EXEMPLOS

GO

 

CREATE DATABASE EXEMPLOS

GO

 

USE EXEMPLOS

 

CREATE TABLE PESSOA

(

      NOME VARCHAR(10),

      APELIDO VARCHAR(10)

)

 

INSERT INTO PESSOA VALUES ('BRUNO', 'AGNALDINHO')

INSERT INTO PESSOA VALUES ('ANTONIO', 'NETINHO')

INSERT INTO PESSOA VALUES ('PEDRO', 'B-')

INSERT INTO PESSOA VALUES ('AGNALDO', 'OGRO')

INSERT INTO PESSOA VALUES ('ANA', 'BANANA')

INSERT INTO PESSOA VALUES ('MARIA', 'VARETA')

INSERT INTO PESSOA VALUES ('MARIANA', NULL)

INSERT INTO PESSOA VALUES ('ANA MARIA', NULL)

 

      LISTAGEM 02 – FUNÇÕES MATEMÁTICAS

 

/*

      ABS(NUMERO)

 

      RETORNA O VALOR ABSOLUTO DE UM NÚMERO QUALQUER

*/

 

SELECT ABS(1)

--1

 

SELECT ABS(-123)

--123

 

SELECT ABS(NULL)

--NULL

 

SELECT ABS('ABACATE')

-- ERRO 8114: Error converting data type varchar to float.

 

 

 

/*

      SIGN(NUMERO)

 

      RETORNA O SINAL DE POSITIVO OU NEGATIVO DO NÚMERO

*/

 

SELECT SIGN(1)

--1 ? POSITIVO

 

SELECT SIGN(-123)

-- -1 ? NEGATIVO

 

SELECT SIGN(NULL)

--NULL

 

SELECT SIGN(0)

--0 ? SEM SINAL

 

SELECT SIGN('ABACATE')

-- ERRO 8114: Error converting data type varchar to float.

 

 

 

/*

      CEILING(NUMERO)

     

      RETORNA O MENOR INTEIRO QUE SEJA MAIOR OU IGUAL

      AO NÚMERO FORNECIDO À FUNÇÃO

*/

 

SELECT CEILING(1.23)

--2

 

SELECT CEILING(-1.23)

-- -1

 

SELECT CEILING(-1.99)

-- -1

 

SELECT CEILING(NULL)

--NULL

 

 

 

/*

      FLOOR(NUMERO)

     

      RETORNA O MAIOR INTEIRO QUE SEJA MENOR OU IGUAL

      AO NÚMERO FORNECIDO À FUNÇÃO

*/

 

SELECT FLOOR(1.23)

--1

 

SELECT FLOOR(-1.23)

-- -2

 

SELECT FLOOR(-1.99)

-- -2

 

SELECT FLOOR(NULL)

--NULL

 

 

 

/*

      ROUND(NUMERO, PRECISÃO, ARREDONDAR_OU_TRUNCAR)

 

      ARREDONDA OU TRUNCA O NÚMERO FORNECIDO,

      DE ACORDO COM A PRECISÃO INFORMADA

 

      SE O TERCEIRO PARÂMETRO NÃO FOR PASSADO PARA

      A FUNÇÃO, O NÚMERO É ARREDONDADO. SE QUISER

      QUE O NÚMERO SEJA TRUNCADO, DEVE-SE FORNECER

      O VALOR 1

*/

 

SELECT ROUND(256.9994, 3)

--256.9990

 

SELECT ROUND(256.9995, 3)

--257.0000

 

SELECT ROUND(256.9994, -1)

--260.0000

 

SELECT ROUND(256.9994, -2)

--300.0000

 

SELECT ROUND(256.9995, 0, 0)

--257.0000

 

SELECT ROUND(256.9995, 0, 1)

-- 256.0000

 

 

           

/*

      PI()

 

      RETORNA O VALOR DE PI, COM 16 CASAS DECIMAIS

*/

 

SELECT PI()

--3.1415926535897931

 

 

 

/*

      SQUARE(NUMERO)

 

      RETORNA O QUADRADO DE UM NÚMERO

*/

 

SELECT SQUARE(3)

--9.0

 

SELECT SQUARE(-3)

--9.0

 

SELECT SQUARE(3.9876)

--15.90095376

 

 

 

/*

      POWER(NUMERO, POTENCIA)

 

      RETORNA O VALOR DO NÚMERO ELEVADO À N-ÉSIMA POTÊNCIA

*/

 

SELECT POWER(3, 2)

--9

 

SELECT POWER(3, -2)

--0 ? ERRADO... ARREDONDOU O RESULTADO PARA INTEIRO

 

SELECT POWER(3.000, -2)

--0.111

 

SELECT POWER(3, .5)

--1 ? ERRADO... ARREDONDOU O RESULTADO PARA INTEIRO

 

SELECT POWER(3.0, .5)

--1.7

 

SELECT POWER(3.00, .5)

--1.73

 

SELECT POWER(3, NULL)

--NULL

 

SELECT POWER(27, (1/3))

--1 ? ERRADO... ARREDONDOU O RESULTADO DA DIVISÃO 1/3 PARA ZERO

--QUALQUER NÚMERO ELEVADO A ZERO É 1

 

SELECT POWER(27.0, (1.0000/3))

--3 ? RAÍZ CÚBICA DE 27 É 3

 

 

 

/*

      SQRT(NUMERO)

 

      RETORNA A RAÍZ QUADRADA DE UM NUMERO

*/

 

SELECT SQRT(3)

--1.7320508075688772

 

SELECT SQRT(2)

--1.4142135623730951

 

SELECT SQRT(-3)

--ERRO ? A domain error occurred

--NA REALIDADE, NÃO EXISTE RAÍZ QUADRADA

--DE NÚMEROS NEGATIVOS EM R

 

 

 

 

      LISTAGEM 03 – FUNÇÕES DE MANIPULAÇÃO DE DATA/HORA

 

/*

      GETDATE()

 

      RETORNA A DATA ATUAL DO SISTEMA

*/

 

SELECT GETDATE()

--2006-06-03 16:16:57.670

 

 

 

/*

      GETUTCDATE()

 

      RETORNA A DATA/HORA ATUAL DO SISTEMA, DE ACORDO COM O PADRÃO

      UTC (UNIVERSAL TIME COORDINATE, OU GREENWICH MEAN TIME)

*/

 

SELECT GETUTCDATE()

--2006-06-03 19:16:57.670

 

 

 

/*

      DAY(DATA)

 

      RETORNA O DIA DE UMA DATA

*/

 

SELECT DAY(GETDATE())

--3

 

SELECT DAY('2006-12-15')

--15

 

SELECT DAY('15-12-2006')

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

SELECT DAY('12-15-2006')

--15

 

SET DATEFORMAT DMY

--MUDA O PADRÃO DE DATA DO SQL SERVER DE MDY (DEFAULT) PARA DMY

 

SELECT DAY('15-12-2006')

--15

 

SELECT DAY('12-15-2006')

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

SET DATEFORMAT MDY

--MUDA O PADRÃO DE DATA DO SQL SERVER DE DMY PARA O VALOR DEFAULT

 

 

 

/*

      MONTH(DATA)

 

      RETORNA O MÊS DE UMA DATA

*/

 

SELECT MONTH(GETDATE())

--6

 

SELECT MONTH('2006-12-15')

--12

 

SELECT MONTH('15-12-2006')

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

SELECT MONTH('12-15-2006')

--12

 

SET DATEFORMAT DMY

--MUDA O PADRÃO DE DATA DO SQL SERVER DE MDY (DEFAULT) PARA DMY

 

SELECT MONTH('15-12-2006')

--12

 

SELECT MONTH('12-15-2006')

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

SET DATEFORMAT MDY

--MUDA O PADRÃO DE DATA DO SQL SERVER DE DMY PARA O VALOR DEFAULT

 

 

 

/*

      YEAR(DATA)

 

      RETORNA O ANO DE UMA DATA

*/

 

SELECT YEAR(GETDATE())

--2006

 

SELECT YEAR('2006-12-15')

--2006

 

SELECT YEAR('15-12-2006')

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

SELECT YEAR('12-15-2006')

--2006

 

SET DATEFORMAT DMY

--MUDA O PADRÃO DE DATA DO SQL SERVER DE MDY (DEFAULT) PARA DMY

 

SELECT YEAR('15-12-2006')

--2006

 

SELECT YEAR('12-15-2006')

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

SET DATEFORMAT MDY

--MUDA O PADRÃO DE DATA DO SQL SERVER DE DMY PARA O VALOR DEFAULT

 

SELECT YEAR('19660912')

--1966

 

     

 

/*

      DATENAME(PARTE, DATA)

 

      RETORNA O NOME DA PARTE DE UMA DATA

*/

 

SELECT DATENAME(YY, '2006-06-03 16:16:57.670')

--2006 à YY = ANO DA DATA

 

SELECT DATENAME(QQ, '2006-06-03 16:16:57.670')

--2 à QQ = TRIMESTRE DA DATA

 

SELECT DATENAME(MM, '2006-06-03 16:16:57.670')

--June à MM = MÊS DA DATA

 

SELECT DATENAME(DY, '2006-06-03 16:16:57.670')

--154 à DY = DIA DO ANO

 

SELECT DATENAME(DD, '2006-06-03 16:16:57.670')

--3 à DD = DIA DO MÊS

 

SELECT DATENAME(WK, '2006-06-03 16:16:57.670')

--22 à WK = SEMANA DO ANO

 

SELECT DATENAME(DW, '2006-06-03 16:16:57.670')

--Saturday à DW = DIA DA SEMANA

 

SELECT DATENAME(HH, '2006-06-03 16:16:57.670')

--16 à HH = HORA DA DATA

 

SELECT DATENAME(MI, '2006-06-03 16:16:57.670')

--16 à MI = MINUTO DA DATA

 

SELECT DATENAME(SS, '2006-06-03 16:16:57.670')

--57 à SS = SEGUNDO DA DATA

 

SELECT DATENAME(MS, '2006-06-03 16:16:57.670')

--670 à MS = MILISSEGUNDO DA DATA

 

 

 

/*

      DATEPART(PARTE, DATA)

 

      RETORNA A PARTE DE UMA DATA

*/

 

SELECT DATEPART(YY, '2006-06-03 16:16:57.670')

--2006 à YY = ANO DA DATA

 

SELECT DATEPART(QQ, '2006-06-03 16:16:57.670')

--2 à QQ = TRIMESTRE DA DATA

 

SELECT DATEPART(MM, '2006-06-03 16:16:57.670')

--6 à MM = MÊS DA DATA

 

SELECT DATEPART(DY, '2006-06-03 16:16:57.670')

--154 à DY = DIA DO ANO

 

SELECT DATEPART(DD, '2006-06-03 16:16:57.670')

--3 à DD = DIA DO MÊS

 

SELECT DATEPART(WK, '2006-06-03 16:16:57.670')

--22 à WK = SEMANA DO ANO

 

SELECT DATEPART(DW, '2006-06-03 16:16:57.670')

--7 à DW = DIA DA SEMANA

 

SELECT DATEPART(HH, '2006-06-03 16:16:57.670')

--16 à HH = HORA DA DATA

 

SELECT DATEPART(MI, '2006-06-03 16:16:57.670')

--16 à MI = MINUTO DA DATA

 

SELECT DATEPART(SS, '2006-06-03 16:16:57.670')

--57 à SS = SEGUNDO DA DATA

 

SELECT DATEPART(MS, '2006-06-03 16:16:57.670')

--670 à MS = MILISSEGUNDO DA DATA

 

 

 

/*

      DATEADD(PARTE, VALOR, DATA)

 

      ADICIONA UM VALOR A UMA PARTE DE UMA DATA

*/

 

SELECT DATEADD(YY, 10, '2006-06-03 16:16:57.670')

--'2016-06-03 16:16:57.670'

 

SELECT DATEADD(YY, -10, '2006-06-03 16:16:57.670')

--'1996-06-03 16:16:57.670'

 

SELECT DATEADD(MM, 12, '2006-06-03 16:16:57.670')

--'2007-06-03 16:16:57.670'

 

SELECT DATEADD(DD, 30, '2006-06-03 16:16:57.670')

--'2006-07-03 16:16:57.670'

 

SELECT DATEADD(DD, 60, '2006-06-03 16:16:57.670')

--'2006-08-02 16:16:57.670'

 

 

 

/*

      DATEDIFF(PARTE, DATA_INICIAL, DATA_FINAL)

 

      SUBTRAI A DATA INICIAL DA DATA FINAL, INDICANDO

      O RESULTADO NA UNIDADE DEFINIDA EM "PARTE"

*/

 

SELECT DATEDIFF(YY, '1966-09-12', '2006-06-03 16:16:57.670')

--40

 

SELECT DATEDIFF(MM, '1966-09-12', '2006-06-03 16:16:57.670')

--477

 

SELECT DATEDIFF(DD, '1966-09-12', '2006-06-03 16:16:57.670')

--14509

 

SELECT DATEDIFF(MI, '1966-09-12', '2006-06-03 16:16:57.670')

--20893936

 

 

 

 

      LISTAGEM 04 – FUNÇÕES DE MANIPULAÇÃO DE STRINGS

 

/*

      ASCII(TEXTO)

 

      RETORNA O CÓDIGO ASCII DO PRIMEIRO

      CARACTERE DO TEXTO PASSADO PARA A FUNÇÃO

 

      (SÓ USADO EM CHAR E VARCHAR)

*/

 

SELECT ASCII('A')

--65

 

SELECT ASCII('ABACATE')

--65

 

SELECT NOME, ASCII(NOME) FROM PESSOA

/*

      NOME                  

      ---------- -----------

      BRUNO      66

      ANTONIO    65

      PEDRO      80

      AGNALDO    65

      ANA        65

      MARIA      77

      MARIANA    77

      ANA MARIA  65

*/

 

/*

      UNICODE(TEXTO)

 

      RETORNA O CÓDIGO UNICODE DO PRIMEIRO

      CARACTERE DO TEXTO PASSADO PARA A FUNÇÃO

*/

 

SELECT UNICODE('A')

--65

 

SELECT UNICODE('ABACATE')

--65

 

SELECT NOME, ASCII(NOME) FROM PESSOA

/*

      NOME                  

      ---------- -----------

      BRUNO      66

      ANTONIO    65

      PEDRO      80

      AGNALDO    65

      ANA        65

      MARIA      77

      MARIANA    77

      ANA MARIA  65

*/

 

 

 

/*

      CHAR(NUMERO)

 

      RETORNA O CARACTERE QUE TEM O CÓDIGO ASCII INFORMADO

     

      SE O CÓDIGO NÃO EXISTIR (FOR MAIOR QUE 255

      OU MENOR QUE 0), RETORNA NULL

*/

 

SELECT CHAR(65)

--'A'

 

SELECT CHAR(97)

--'a'

 

 

 

/*

      NCHAR(NUMERO)

 

      RETORNA O CARACTERE QUE TEM O CÓDIGO UNICODE INFORMADO

     

      SE O CÓDIGO NÃO EXISTIR (FOR MAIOR QUE 65535

      OU MENOR QUE 0), RETORNA NULL

*/

 

SELECT NCHAR(65)

--'A'

 

SELECT NCHAR(97)

--'a'

 

 

 

/*

      CHARINDEX(STRING_A_SER_PESQUISADA, TEXTO)

 

      RETORNA A POSIÇÃO INICIAL ONDE A STRING

      "STRING_A_SER_PESQUISADA" FOI ENCONTRADA

      NO TEXTO

     

      SE A STRING NÃO FOR ENCONTRADA, A FUNÇÃO RETORNA ZERO

 

*/

 

SELECT CHARINDEX('A', 'AGNALDO')

--1

 

SELECT CHARINDEX('O', 'AGNALDO')

--7

 

SELECT CHARINDEX('X', 'AGNALDO')

--0

 

 

 

/*

      LEFT(TEXTO, N)

 

      RETORNA OS PRIMEIROS N CARACTERES (DA ESQUERDA) DO

      TEXTO PASSADO PARA A FUNÇÃO

     

*/

 

SELECT LEFT('AGNALDO DIOGO DOS SANTOS', 7)

--'AGNALDO'

 

 

 

 

/*

      RIGHT(TEXTO, N)

 

      RETORNA OS ÚLTIMOS N CARACTERES (DA DIREITA) DO

      TEXTO PASSADO PARA A FUNÇÃO

     

*/

 

SELECT RIGHT('AGNALDO DIOGO DOS SANTOS', 6)

--'SANTOS'

 

SELECT RIGHT('AGNALDO DIOGO DOS SANTOS ', 6)

--'ANTOS '

 

 

 

/*

      LEN(TEXTO)

 

      RETORNA O COMPRIMENTO DO TEXTO INFORMADO

*/

 

SELECT LEN('AGNALDO D. DOS SANTOS')

--21

 

SELECT LEN('AGNALDO D. DOS SANTOS        ')

--21

 

SELECT LEN(NULL)

--NULL

 

SELECT LEN(123456)

--6

 

 

 

/*

      LOWER(TEXTO)

 

      RETORNA O TEXTO, EM MINÚSCULAS

*/

 

SELECT LOWER('AGNALDO DIOGO DOS SANTOS')

--'agnaldo diogo dos santos'

 

 

 

/*

      UPPER(TEXTO)

 

      RETORNA O TEXTO, EM MAIÚSCULAS

*/

 

SELECT UPPER('Agnaldo Diogo dos Santos')

--'AGNALDO DIOGO DOS SANTOS'

 

 

 

/*

      LTRIM(TEXTO)

 

      RETORNA O TEXTO SEM OS ESPAÇOS EM BRANCO DA ESQUERDA

*/

 

SELECT LTRIM('     AGNALDO DIOGO DOS SANTOS      ')

--'AGNALDO DIOGO DOS SANTOS      '

 

 

 

/*

      RTRIM(TEXTO)

 

      RETORNA O TEXTO SEM OS ESPAÇOS EM BRANCO DA DIREITA

*/

 

SELECT RTRIM('     AGNALDO DIOGO DOS SANTOS      ')

-- '     AGNALDO DIOGO DOS SANTOS'

 

 

 

/*

      REPLACE(TEXTO, STRING_A_SUBSTITUIR, STRING_NOVA)

 

      SUBSTITUI A STRING "STRING_A_SUBSTITUIR", EXISTENTE NA

      STRING "TEXTO" PELA "STRING_NOVA"

*/

 

SELECT REPLACE('AGUINALDO DIOGO DOS SANTOS', 'AGUINALDO', 'AGNALDO')

-- 'AGNALDO DIOGO DOS SANTOS'

 

 

 

/*

      REPLICATE(TEXTO, N)

 

      RETORNA O TEXTO, REPLICADO N VEZES

*/

 

SELECT REPLICATE('*',10)

--'**********'

 

SELECT REPLICATE('AR',2)

--'ARAR'

 

 

 

/*

      REVERSE(TEXTO)

 

      RETORNA O TEXTO, ESCRITO DA DIREITA PARA A ESQUERDA

*/

 

SELECT REVERSE('AGNALDO')

--'ODLANGA'

 

SELECT REVERSE('AGNALDO DIOGO DOS SANTOS')

--'SOTNAS SOD OGOID ODLANGA'

 

 

 

/*

      SOUNDEX(TEXTO)

 

      RETORNA UM CÓDIGO DE 4 POSIÇÕES QUE REPRESENTA A STRING "TEXTO"

*/

 

SELECT SOUNDEX('AGNALDO')

--'A254'

 

SELECT SOUNDEX('AGUINALDO')

--'A254'

 

 

 

/*

      SPACE(N)

 

      RETORNA UMA STRING COM N ESPAÇOS

*/

 

SELECT SPACE(10)

--'       '

 

SELECT 'AGNALDO' + SPACE(10) + ' SANTOS'

--'AGNALDO           SANTOS'

 

 

 

/*

      STR(N, X, DECIMAIS)

 

      RETORNA O NÚMERO N CONVERTIDO EM STRING DE X POSIÇÕES,

      COM A QUANTIDADE DE CASAS DECIMAIS INFORMADO EM "DECIMAIS"

*/

 

SELECT STR(10)

--'10'

 

SELECT STR(123.456,8,2)

--'123.46'

 

SELECT STR(123.456,8,2),

      STR(123.456,5,3),

      STR(123.456,4,3),

      STR(123.456,3,3),

      STR(123.456,2,3)

--'123.46', '123.5', '123', '123', '**'

 

 

 

/*

      STUFF(TEXTO, X, Y, TEXTO_A_INSERIR)

     

      APAGA DA STRING "TEXTO" OS Y CARACTERES A PARTIR DA POSIÇÃO X

      E OS SUBSTITUI POR "TEXTO_A_INSERIR"

     

*/

 

SELECT STUFF('AGNALDO DIOGO DOS SANTOS', 1, 7, 'CAIO CÉSAR'),

      REPLACE('AGNALDO DIOGO DOS SANTOS', 'AGNALDO', 'CAIO CÉSAR')

--'CAIO CÉSAR DIOGO DOS SANTOS', 'CAIO CÉSAR DIOGO DOS SANTOS'

 

SELECT STUFF('123.456.789.01', 12, 1, '-'),

      REPLACE('123.456.789.01', '.', '-')

--'123.456.789-01', '123-456-789-01'

 

 

 

/*

      SUBSTRING(TEXTO, POSICAO_INICIAL, COMPRIMENTO)

     

      RETORNA UMA STRING COM O COMPRIMENTO DEFINIDO EM "COMPRIMENTO",

      EXTRAÍDA DA STRING "TEXTO", A PARTIR DA "POSICAO_INICIAL"

     

*/

 

SELECT SUBSTRING('AGNALDO DIOGO DOS SANTOS', 1, 7)

--'AGNALDO'

 

SELECT SUBSTRING('AGNALDO DIOGO DOS SANTOS', 9, 5)

--'DIOGO'

 

SELECT SUBSTRING('AGNALDO DIOGO DOS SANTOS', 15, 3)

--'DOS'

 

SELECT SUBSTRING('AGNALDO DIOGO DOS SANTOS', 19, 6)

--SANTOS

 

SELECT SUBSTRING('AGNALDO DIOGO DOS SANTOS', 9)

--ERRO 174: The substring function requires 3 arguments.

--EM ALGUMAS LINGUAGENS, QUANDO NÃO SE FORNECE O COMPRIMENTO,

--O RETORNO É A STRING EXTRAÍDA A PARTIR DA POSIÇÃO INFORMADA,

--ATÉ O ÚLTIMO CARACTERE – ISSO NÃO ACONTECE COM O SQL

 

 

 

 

      LISTAGEM 05 – FUNÇÕES DE CONFIGURAÇÃO DE AMBIENTE

 

/*

      @@DATEFIRST

 

      RETORNA OU ATRIBUI O VALOR PARA O PRIMEIRO DIA DA SEMANA

*/

 

SELECT @@DATEFIRST

--7 à DOMINGO

 

SELECT DATEPART(DW, GETDATE()), GETDATE()

--2, 2006-06-05 21:14:15.840

 

SET DATEFIRST 1 --SEGUNDA

 

SELECT DATEPART(DW, GETDATE()), GETDATE()

--1, 2006-06-05 21:14:15.840

 

SET DATEFIRST 7 --DOMINGO

 

 

 

/*

      @@DBTS

 

      RETORNA O VALOR DO ÚLTIMO VALOR TIMESTAMP USADO NO DATABASE ATIVO

      UM NOVO TIMESTAMP É GERADO QUANDO UMA COLUNA DO TIPO TIMESTAMP É

      INSERIDA OU ATUALIZADA

*/

 

USE MASTER

SELECT @@DBTS

--0x00000000000001FA

 

USE EXEMPLOS

SELECT @@DBTS

--0x0000000000000064

 

CREATE TABLE EX_TS

(

      COD INT,

      TS TIMESTAMP

)

 

INSERT INTO EX_TS(COD) VALUES (1)

 

SELECT * FROM EX_TS

/*

      COD TS

      1   0x0000000000000065

*/

 

SELECT @@DBTS

--0x0000000000000065

 

 

 

/*

      @@LANGUAGE

 

      ESPECIFICA A LINGUAGEM UTILIZADA NA SESSÃO.

      ESSA LINGUAGEM DEFINE O FORMATO DE DATA E

      AS MENSAGENS RETORNADAS PELO SQL SERVER

 

      AS LINGUAGENS FICAM ARMAZENADAS NA TABELA DO CATÁLOGO

      DO SISTEMA SYSLANGUAGES

*/

 

SELECT * FROM MASTER..SYSLANGUAGES

/*

--DIVERSAS LINHAS DE TABELA

*/

 

 

 

SELECT @@LANGUAGE

--US_ENGLISH

 

CREATE TABLE EX_DATA

(

      DATA DATETIME

)

 

INSERT INTO EX_DATA VALUES('15/12/2006') -- DMY

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

INSERT INTO EX_DATA VALUES('12/15/2006') --MDY

--1 row(s) affected

 

SELECT DATENAME(MM, GETDATE())

--JUNE

 

SELECT DATENAME(DW, GETDATE())

--MONDAY

 

SET LANGUAGE 'Português (Brasil)'

--Changed language setting to Português (Brasil).

 

INSERT INTO EX_DATA VALUES('15/12/2006') -- DMY

--1 row(s) affected

 

INSERT INTO EX_DATA VALUES('12/15/2006') --MDY

--ERRO 242: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

 

SELECT DATENAME(MM, GETDATE())

--JUNHO

 

SELECT DATENAME(DW, GETDATE())

--SEGUNDA-FEIRA

 

SET LANGUAGE 'US_ENGLISH'

--Changed language setting to us_english.

 

 

 

/*

      @@LANGID

 

      RETORNA O ID DA LINGUAGEM UTILIZADA NA SESSÃO.

*/

 

SET LANGUAGE 'Português (Brasil)'

--Changed language setting to Português (Brasil).

 

SELECT @@LANGID

--27

 

SET LANGUAGE 'US_ENGLISH'

--Changed language setting to us_english.

 

SELECT @@LANGID

--0

 

 

 

/*

      @@LOCK_TIMEOUT

 

      RETORNA O TEMPO (EM MILISSEGUNDOS) QUE O SQL SERVER

      ESPERA UM RECURSO SER LIBERADO DE UM LOCK. SE O TEMPO DE ESPERA

      ATINGIR O TEMPO DEFINIDO EM @@LOCK_TIMEOUT, UM ERRO É GERADO

*/

 

SELECT @@LOCK_TIMEOUT

-- -1 ? NÃO SETADO

 

CREATE TABLE EX_LT

(

      COD INT

)

 

BEGIN TRAN

 

INSERT INTO EX_LT VALUES (1)

 

--EM OUTRA JANELA DO QUERY ANALYSER (ABRA COM CTRL+N), EXECUTE OS COMANDOS ABAIXO:

 

SET LOCK_TIMEOUT 5000 --5 SEGUNDOS

--The command(s) completed successfully.

 

SELECT @@LOCK_TIMEOUT

--5000

 

SELECT * FROM EX_LT --UM ERRO É GERADO APÓS 5 SEGUNDOS

--ERRO 1222: Lock request time out period exceeded.

 

ROLLBACK TRAN --DESFAZ A TRANSAÇÃO

 

 

 

/*

      @@MAX_CONNECTIONS

 

      RETORNA O NÚMERO MÁXIMO DE CONEXÕES SIMULTÂNEAS ACEITAS PELO SQL SERVER

*/

 

SELECT @@MAX_CONNECTIONS

--32767

 

 

 

/*

      @@MAX_PRECISION

 

      RETORNA A PRECISÃO MÁXIMA PARA DATATYPES DECIMAL E NUMERIC

*/

 

SELECT @@MAX_PRECISION

-- 38 à É O VALOR DEFAULT DO SQL SERVER

 

 

/*

      @@NESTLEVEL

 

      INDICA O NÍVEL DE ANINHAMENTO DA PROCEDURE ATUAL

 

      QUANDO O VALOR CHEGA EM 32, A TRANSAÇÃO É TERMINADA

*/

 

SELECT @@NESTLEVEL

--0

 

CREATE PROC P3

AS

      SELECT @@NESTLEVEL AS 'NIVEL DE P3'

GO

 

CREATE PROC P2

AS

      SELECT @@NESTLEVEL AS 'NIVEL DE P2'

      EXEC P3

GO

 

CREATE PROC P1

AS

      SELECT @@NESTLEVEL AS 'NIVEL DE P1'

      EXEC P2

GO

 

EXEC P1

/*

      NIVEL DE P1

      -----------

      1

 

      NIVEL DE P2

      -----------

      2

 

      NIVEL DE P3

      -----------

      3

*/

 

 

/*

      @@SERVERNAME

 

      RETORNA O NOME DO SERVIDOR

*/

 

SELECT @@SERVERNAME

--SERVIDOR

 

 

/*

      @@SERVICENAME

 

      RETORNA O NOME DO SERVIÇO SQL

*/

 

SELECT @@SERVICENAME

--MSSQLSERVER

 

 

 

/*

      @@SPID

 

      RETORNA O ID DO PROCESSO ATUAL (SPID = SERVER PROCESS IDENTIFIER)

*/

 

SELECT @@SPID

--51

 

 

 

/*

      @@VERSION

 

      RETORNA A VERSÃO DO SQL

*/

 

SELECT @@VERSION

/*

      Microsoft SQL Server  2000 - 8.00.194 (Intel X86)

            Aug  6 2000 00:57:48

            Copyright (c) 1988-2000 Microsoft Corporation

            Developer Edition on Windows NT 5.0 (Build 2195: Service Pack 4)

*/

 

 

 

 

      LISTAGEM 06 – FUNÇÕES QUE RETORNAM METADADOS

 

/*

      DB_NAME(ID)

 

      RETORNA O NOME DO DATABASE QUE TEM O ID FORNECIDO

*/

 

SELECT DB_NAME(1)

--MASTER

 

 

 

/*

      DB_ID(NOME)

 

      RETORNA O ID DE UM DATABASE, A PARTIR DO NOME FORNECIDO

*/

 

SELECT DB_ID('MASTER')

--1

 

 

 

/*

      OBJECT_NAME(ID)

 

      RETORNA O NOME DO OBJETO QUE TEM O ID FORNECIDO

*/

 

SELECT OBJECT_NAME(1)

--SYSOBJECTS

 

 

 

/*

      OBJECT_ID(NOME)

 

      RETORNA O ID DE UM OBJETO, A PARTIR DO NOME FORNECIDO

*/

 

SELECT OBJECT_ID('SYSOBJECTS')

--1

 

 

 

/*

      COL_NAME(ID_DA_TABELA, POSICAO_DA_COLUNA)

 

      RETORNA O NOME DA COLUNA QUE OCUPA A POSIÇÃO

      "POSICAO_DA_COLUNA" NA TABELA QUE TEM O ID

*/

 

SELECT COL_NAME(OBJECT_ID('PESSOA'), 1)

--NOME

 

 

 

 

      LISTAGEM 07 – FUNÇÕES QUE RETORNAM INFORMAÇÕES DE SEGURANÇA

 

 

 

/*

      HAS_DBACCESS(NOME_DO_DATABASE)

 

      RETORNA 1 SE O USUÁRIO LOGADO TIVER ACESSO AO DATABASE,

      0 SE NÃO TIVER ACESSO OU NULL SE O NOME DO DATABASE FOR

      INVÁLIDO

*/

 

SELECT HAS_DBACCESS('MASTER')

--1

 

SELECT HAS_DBACCESS('BANCO_QUE_O_USUARIO_NAO_TEM_ACESSO')

--0

 

SELECT HAS_DBACCESS('BANCO_INEXISTENTE')

--NULL

 

 

 

/*

      SUSER_SID(NOME_DO_USUARIO)

 

      RETORNA O ID DO USUÁRIO INFORMADO

*/

 

SELECT SUSER_SID('SA')

--0X01

 

SELECT SUSER_SID('PAULISTA21\ADMINISTRATOR')

--0x010500000000000515000000D22AA026BC35C0275F38CD1AF4010000

 

SELECT SUSER_SID('USUARIO_INEXISTENTE')

--NULL

 

 

 

/*

      SUSER_SNAME(ID_DO_USUARIO)

 

      RETORNA O NOME DO USUÁRIO INFORMADO

 

      SE NENHUM ID DE USUÁRIO FOR PASSADO PARA A FUNÇÃO,

      RETORNA O NOME DO USUÁRIO LOGADO

*/

 

SELECT SUSER_SNAME()

--SA

 

SELECT SUSER_SNAME(0X01)

--SA

 

SELECT SUSER_SNAME(0X0123)

--NULL ? NÃO EXISTE USUÁRIO COM O ID 0X0123

 

 

 

/*

      USER

 

      RETORNA O NOME DO USUÁRIO LOGADO NO DATABASE EM USO

 

*/

 

SELECT USER

--DBO

 

 

 

/*

      USER_ID(NOME_DO_USUARIO)

 

      RETORNA O ID DO USUÁRIO INFORMADO PARA O DATABASE EM USO

 

      SE NENHUM ID DE USUÁRIO FOR PASSADO PARA A FUNÇÃO,

      RETORNA O NOME DO USUÁRIO LOGADO

*/

 

SELECT USER_ID('DBO')

--1

 

SELECT USER_ID()

--1

 

SELECT USER_ID('SA')

--NULL

 

SELECT USER_ID('USUARIO_INEXISTENTE')

--NULL

 

 

 

 

      LISTAGEM 08 – FUNÇÕES DE SISTEMA

 

/*

      APP_NAME()

 

      RETORNA O NOME DA APLICAÇÃO QUE ESTÁ EXECUTANDO O COMANDO

*/

 

SELECT APP_NAME()

--SQL Query Analyzer

 

 

 

/*

      CAST(EXPRESSAO AS DATATYPE)

 

      CONVERTE UMA EXPRESSÃO NO DATATYPE INFORMADO

*/

 

SELECT CAST(1.1234 AS DECIMAL(10,2))

--1.12

 

SELECT CAST(GETDATE() AS VARCHAR)

--Jun  7 2006  9:58PM

 

 

 

/*

      CONVERT(DATATYPE, EXPRESSAO, ESTILO)

 

      CONVERTE UMA EXPRESSÃO NO DATATYPE INFORMADO

 

      SE A EXPRESSÃO ORIGINAL FOR UMA DATA, PODEMOS USAR

      UM ESTILO DE FORMATAÇÃO

*/

 

SELECT CONVERT(DECIMAL(10,2), 1.1234)

--1.12

 

SELECT CONVERT(VARCHAR, GETDATE())

--Jun  7 2006  9:58PM

 

SELECT CONVERT(VARCHAR, GETDATE(), 103)

--07/06/2006

 

SELECT CONVERT(VARCHAR, GETDATE(), 3)

--07/06/06

 

SELECT CONVERT(VARCHAR, GETDATE(), 108)

--21:58:12

 

 

 

/*

      COALESCE(LISTA_DE_EXPRESSOES)

 

      RETORNA O PRIMEIRO VALOR NÃO NULO DA LISTA

*/

 

SELECT COALESCE(NULL, 'AGNALDO', 'BRUNO', 'NETINHO', 'PEDRO')

--AGNALDO

 

SELECT COALESCE('BRUNO', 'NETINHO', 'PEDRO', NULL, 'AGNALDO')

--BRUNO

 

SELECT APELIDO, NOME, COALESCE(APELIDO, NOME) FROM PESSOA

/*

      APELIDO    NOME                  

      ---------- ---------- ----------

      AGNALDINHO BRUNO      AGNALDINHO

      NETINHO    ANTONIO    NETINHO

      B-         PEDRO      B-

      OGRO       AGNALDO    OGRO

      BANANA     ANA        BANANA

      VARETA     MARIA      VARETA

      NULL       MARIANA    MARIANA

      NULL       ANA MARIA  ANA MARIA

*/

 

 

 

/*

      CURRENT_TIMESTAMP

 

      RETORNA A DATA E HORA ATUAIS

 

      EQUIVALENTE AO GETDATE()

*/

 

SELECT CURRENT_TIMESTAMP

--2006-06-07 22:14:41.513

 

 

 

/*

      CURRENT_USER

 

      RETORNA O USUÁRIO CONECTADO AO DATABASE

 

      EQUIVALENTE AO USER_NAME()

*/

 

SELECT CURRENT_USER

--DBO

 

 

 

/*

      DATALENGTH(EXPRESSAO)

 

      RETORNA O NÚMERO DE BYTES USADOS PARA ARMAZENAR A EXPRESSÃO

*/

 

SELECT DATALENGTH('AGNALDO')

--7 à ASCII

 

SELECT DATALENGTH(N'AGNALDO')

--14 à UNICODE

 

SELECT DATALENGTH(1234)

--4 à DATATYPE INT

 

SELECT DATALENGTH(GETDATE())

--8

 

 

 

/*

      @@ERROR

 

      RETORNA O NÚMERO DO ERRO OCORRIDO NA ÚLTIMA LINHA EXECUTADA

 

      ZERO É EXECUÇÃO COM SUCESSO - NÚMEROS DIFERENTES DE ZERO SÃO ERROS

*/

 

SELECT 1/0

--ERRO 8134 - Divide by zero error encountered.

SELECT @@ERROR

--8134

 

SELECT 1/1

--1

SELECT @@ERROR

--0

 

 

 

/*

      FN_HELPCOLLATIONS()    

 

      RETORNA A LISTA COM TODOS OS COLLATIONS SUPORTADOS PELO SQL SERVER 2000

*/

 

 

SELECT * FROM  ::FN_HELPCOLLATIONS()

/*

      NAME                            DESCRIPTION

      ------------------------------- -----------------------------------

      ALBANIAN_BIN                      ALBANIAN, BINARY SORT

      ALBANIAN_CI_AI                    ALBANIAN, CASE-INSENSITIVE, ACC...

      ALBANIAN_CI_AI_WS               ALBANIAN, CASE-INSENSITIVE, ACC...

 

      ... (SÃO 753 LINHAS)

 

      SQL_SWEDISHPHONE_PREF_CP1_CI_AS    FINNISH-SWEDISH, CASE-INSENSITI...

      SQL_SWEDISHSTD_PREF_CP1_CI_AS FINNISH-SWEDISH, CASE-INSENSITI...

      SQL_UKRAINIAN_CP1251_CI_AS   UKRAINIAN, CASE-INSENSITIVE, AC...

*/

 

 

 

/*

      HOST_ID()

 

      RETORNA O ID DA ESTAÇÃO QUE ESTÁ ACESSANDO O SQL SERVER   

*/

 

SELECT HOST_ID()

--1952

 

 

 

/*

      HOST_NAME()

 

      RETORNA O NOME DA ESTAÇÃO QUE ESTÁ ACESSANDO O SQL SERVER 

*/

 

SELECT HOST_NAME()

--INSTRUTOR21

 

 

 

/*

      @@IDENTITY

 

      RETORNA O ÚLTIMO VALOR IDENTITY INSERIDO

      (PODE SER EM QUALQUER TABELA QUE TENHA UMA COLUNA

      IDENTITY - NÃO TEM COMO ESCOLHER A TABELA DESEJADA)

*/

 

SELECT @@IDENTITY

--NULL

 

CREATE TABLE EX_ID

(

      NUMERO INT IDENTITY,

      TEXTO VARCHAR(10)

)

 

INSERT INTO EX_ID VALUES('ABC')

INSERT INTO EX_ID VALUES('XYZ')

INSERT INTO EX_ID VALUES('XPTO')

 

SELECT @@IDENTITY

--3

 

CREATE TABLE EX_ID2

(

      NUMERO INT IDENTITY,

      TEXTO VARCHAR(10)

)

 

INSERT INTO EX_ID2 VALUES('ABC')

INSERT INTO EX_ID2 VALUES('XYZ')

 

SELECT @@IDENTITY

--2 à O ÚLTIMO INSERT FOI NA TABELA EX_ID2 E O VALOR INSERIDO FOI 2

 

 

 

/*

      ISNULL(EXPRESSAO, NOVO_VALOR)

 

      SE A EXPRESSÃO "EXPRESSÃO" FOR NULL, O VALOR "NOVO_VALOR"

      É RETORNADO, SENÃO, O RETORNO É A PRÓPRIA EXPRESSÃO

*/

 

SELECT ISNULL(GETDATE(), '1900-01-01')

--2006-06-07 22:50:18.107

 

DECLARE @NUMERO INT

SELECT @NUMERO AS VALOR_ORIGINAL, ISNULL(@NUMERO, 0) AS VALOR_TRATADO

/*

      VALOR_ORIGINAL VALOR_TRATADO

      -------------- -------------

      NULL           0

*/

 

DECLARE @NUM INT

SET @NUM = 10

SELECT @NUM AS VALOR_ORIGINAL, ISNULL(@NUM, 0) AS VALOR_TRATADO

/*

      VALOR_ORIGINAL VALOR_TRATADO

      -------------- -------------

      10             10

*/

 

 

 

/*

      ISNUMERIC(EXPRESSAO)

 

      RETORNA 1 SE A EXPRESSÃO FOR NUMÉRICA E ZERO SE NÃO FOR

*/

 

SELECT GETDATE(), ISNUMERIC(GETDATE())

/*

      ----------------------- -----------

      2006-06-07 22:53:50.670 0

*/

 

SELECT 50, ISNUMERIC(50)

/*

      ------- -------

      50      1

*/

 

SELECT PI(), ISNUMERIC(PI())

/*

      ------------------ -------

      3.1415926535897931 1

*/

 

 

 

/*

      NEWID()

 

      RETORNA UM NOVO VALOR DO TIPO UNIQUEIDENTIFIER

*/

 

SELECT NEWID()

--5CF8F155-6CAF-4C1E-8F52-2DB9BF03CE13

 

SELECT NEWID()

--24A506F0-23BA-4C9A-9512-F9CFF93265BA

 

 

 

/*

      NULLIF(EXPRESSAO_01, EXPRESSAO_02)

 

      RETORNA NULO SE AS DUAS EXPRESSÕES FOREM EQUIVALENTES

      SE NÃO FOREM, RETORNA A PRIMEIRA EXPRESSÃO

*/

 

SELECT NULLIF(1,1)

--NULL

 

SELECT NULLIF(1,2)

--1

 

SELECT NULLIF(2,1)

--2

 

SELECT CONVERT(VARCHAR, GETDATE(), 103),

      NULLIF(CONVERT(VARCHAR, GETDATE(), 103), '07/06/2006')

----------- ------

07/06/2006  NULL

 

 

 

/*

      PARSENAME(OBJETO, PARTE)

 

      RETORNA A PARTE DO NOME DE UM OBJETO, DESDE QUE

      TENHA SIDO QUALIFICADO 

*/

 

SELECT PARSENAME('EXEMPLOS.DBO.PESSOA', 1) AS 'NOME DO OBJETO'

--PESSOA

 

SELECT PARSENAME('EXEMPLOS.DBO.PESSOA', 2) AS 'PROPRIETÁRIO DO OBJETO'

--DBO

 

SELECT PARSENAME('PESSOA', 2) AS 'PROPRIETÁRIO DO OBJETO'

--NULL

 

SELECT PARSENAME('EXEMPLOS.DBO.PESSOA', 3) AS 'NOME DO DATABASE'

--EXEMPLOS

 

SELECT PARSENAME('PAULISTA21.EXEMPLOS.DBO.PESSOA', 4) AS 'NOME DO SERVIDOR'

--PAULISTA21

 

SELECT PARSENAME('EXEMPLOS.DBO.PESSOA', 4) AS 'NOME DO SERVIDOR'

--NULL

 

 

 

/*

      @@ROWCOUNT

 

      RETORNA A QUANTIDADE DE LINHAS AFETADAS PELO

      ÚLTIMO COMANDO EXECUTADO

*/

 

SELECT @@ROWCOUNT

--0

 

SELECT * FROM PESSOA

/*

      NOME       APELIDO   

      ---------- ----------

      BRUNO      AGNALDINHO

      ANTONIO    NETINHO

      PEDRO      B-

      AGNALDO    OGRO

ANA        BANANA

      MARIA      VARETA

      MARIANA    NULL

      ANA MARIA  NULL

*/

 

SELECT @@ROWCOUNT

--8

 

 

 

/*

      ROWCOUNT_BIG()

 

      RETORNA UM BIGINT COM A QUANTIDADE DE LINHAS AFETADAS PELO

      ÚLTIMO COMANDO EXECUTADO

*/

 

SELECT ROWCOUNT_BIG()

--8

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?