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.
Related articles
Short: SQL Update using begin try and begin transaction
Commit and Rollback command
Getting the last 120 months of data from my database
how to do it in SQL language?
How to create a variable to use the IN clause SELECT query SQL?
Database code part
Ozimar Henrique