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

Funções escalares

Listagem 01 – Criação do ambiente

            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 string

            
/*

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 S
/*

      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 S

        
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