SQL Server “Denali” – Funções de conversão – PARSE() e TRY_PARSE()

Compartilhe este artigo!

Sobre o autor

Entre em contato...

Redação ForumWeb

Redação ForumWeb Equipe de desenvolvimento do ForumWeb.com.br, responsável pelas dicas e downloads do site.

Site do autor: http://www.forumweb.com.br

Indique este artigo

Para

Seu email

Mensagem

Fechar
Personalize sua mensagem

Código

Arquivos relacionados

  • Por enquanto, nenhum arquivo para download.

SQL Server “Denali” – Funções de conversão – PARSE() e TRY_PARSE()

Segunda-Feira, 22 de Agosto de 2011 às 11:09

PARSE() e TRY_PARSE() são novas funções introduzidas no SQL Server Denali.

PARSE() converte o objeto para o tipo de dados especificado, caso contrário ele gera um erro. Já a TRY_PARSE(), tenta converter o objeto para o tipo de dados especificado, caso contrário ele retorna NULL.

Por exemplo, vamos tentar converter o valor abaixo para inteiro:

SELECT PARSE('10.20' AS INT) AS Result
SELECT TRY_PARSE('10.20' AS INT) AS Result

Resultado:

Result
———–
Msg 9819, Level 16, State 1, Line 1
Error converting string value '10.20' into data type int using culture ”.

Result
———–
NULL

Como 10.20 não é um valor inteiro, a função PARSE() gera um erro, e o TRY_PARSE() retorna NULL.

Uma utilidade do TRY_PARSE() é quando se usa o PARSE() sem o TRY...CATCH:

DECLARE @NumList TABLE
(
     Num1 VARCHAR(5)
)
INSERT INTO @NumList VALUES ('10'),('10.20'),('11')

SELECT CASE WHEN TRY_PARSE(Num1 AS INT) IS NULL THEN 0
       ELSE PARSE(Num1 AS INT)
       END AS Result
FROM   @NumList

Resultado:

Result
———–
10
0
11

Ambas as funções também suportam a utilização de cultura diferente. Por exemplo, na hora de converter uma string para DATETIME:

SELECT TRY_PARSE('27 juillet, 2011' AS DATETIME)
       AS 'Inglês',
       TRY_PARSE('27 juillet, 2011' AS DATETIME USING 'fr-FR')
       AS 'Francês'

Resultado:

Inglês		Francês
———————–	———————–
NULL		2011-07-27 00:00:00.000

O primeiro retorna NULL, porque “juillet” não é um mês válido em inglês.

Autor/Fonte: SQL & Me

Qual a sua opinião?

Comente e interaja!



Ainda sem comentários, comente!