SQL Server 2012 . Novas funções conversion e logical
Novidades no SQL Server 2012
Seguindo com as novidades do SQL 2012, neste post veremos novas funções (Conversion e Logical)
1) CONVERSION FUNCTIONS - PARSE, TRY_PARSE e TRY_CONVERT
Vamos começar com a função PARSE. É parecida com a Convert, mas tem algumas particularidades, o parâmetro de entrada deve ser uma string e na saÃda você pode definir a cultura.
1.1) PARSE
Vamos executar estes comandos:
Select PARSE('0.02315' as money)
Select PARSE('002315' as int)
select datename(month,(PARSE('5/12/2012' as datetime using 'pt-br')))
select datename(month,(PARSE('5/12/2012' as datetime using 'en-us')))
select PARSE('30/12/2012' as date using 'pt-br')

1.2) TRY_PARSE
O comando abaixo retorno um erro, para nos ajudar no tratamento foi criado o comando TRY_PARSE que retorna null em caso de erro.
select PARSE('30/12/2012' as datetime)
select TRY_PARSE('30/12/2012' as datetime)
1.3) TRY_CONVERT
Caso o valor origem não seja uma string, continue usando o CONVERT.
porém agora existe o TRY_CONVERT, que assim como o TRY_PARSE, retorna NULL em caso de erro.
Quando é uma conversão permitida, mas com erro, ele retorna null
select TRY_CONVERT(int, '4s')
Quando é uma conversão não permitida, ele retorna erro
select TRY_CONVERT(xml, 4)

2)LOGICAL FUNCTIONS - CHOOSE, IIF
2.1) CHOOSE
O comando CHOOSE é uma forma mais limpa de fazer um CASE, ele utiliza valores sequenciais a partir de 1.
Declare @Cargo int
Set @Cargo=2
ANTIGO:
Select CASE When @Cargo=1 then 'Estagiário'
When @Cargo=2 then 'Analista'
When @Cargo=3 then 'Coordenador'
When @Cargo=4 then 'Gerente'
END
NOVO:
Select CHOOSE(@Cargo, 'Estagiário','Analista','Coordenador','Gerente')

Como ele não tem o ELSE, podemos ajustar com o ISNULL:
Select ISNULL(CHOOSE(@Cargo, 'Estagiário', 'Analista', 'Coordenador', 'Gerente'), 'Sem Valor')
2.2) IIF
O comando IIF é um velho conhecido e finalmente chegou ao SQL Server.
Ele utiliza a estrutura IF-THEN-ELSE, mas de uma forma mais limpa. IIF(Condição, se verdadeiro, se falso)
Declare @Cargo int
Set @Cargo=2
ANTIGO:
IF @Cargo=4
Print 'Gerente'
ELSE
Print 'Outro'
NOVO:
PRINT IIF(@Cargo=4,'Gerente','Outro')
Na parâmetro condição, também pode ser usado IN, Like, Exists, etc
Próximo Post falarei sobre Date and time functions e String functions.
Subscribe ecode10.com
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.
Log In
Related articles
SELECT Format Date Time for many countries
It is a good tip to use day by day
Creating a SiteMap using SQL Database
Como indexar melhor meu site e links?
Transformando linhas em colunas usando SQL Server
veja como funciona