Partilhar via


TRY_PARSE (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Ponto de extremidade de análises SQL no Microsoft Fabric Warehouse no Microsoft Fabric

Retorna o resultado de uma expressão, convertido no tipo de dados solicitado, ou nulo se a conversão falha no SQL Server. Use TRY_PARSE somente para converter da cadeia de caracteres em data/hora e tipos numéricos.

Convenções de sintaxe de Transact-SQL

Sintaxe

TRY_PARSE ( string_value AS data_type [ USING culture ] )  

Argumentos

string_value
Valor nvarchar(4000) que representa o valor formatado a ser analisado no tipo de dados especificado.

string_value deverá ser uma representação válida do tipo de dados solicitado ou TRY_PARSE retornará nulo.

data_type
Literal que representa o tipo de dados solicitado para o resultado.

cultura
Cadeia de caracteres opcional que identifica a cultura na qual string_value é formatado.

Se o argumento culture não for fornecido, o idioma da sessão atual será usado. Esse idioma é definido implícita ou explicitamente com o uso da instrução SET LANGUAGE. culture aceita qualquer cultura compatível com o .NET Framework; não se limita aos idiomas explicitamente compatíveis do SQL Server. Se o argumento culture não for válido, PARSE gerará um erro.

Tipos de retorno

Retorna o resultado da expressão, convertido no tipo de dados solicitado, ou nulo se a conversão falhar.

Comentários

Use TRY_PARSE somente para converter da cadeia de caracteres em data/hora e tipos numéricos. Para conversões de tipos gerais, continue a usar CAST ou CONVERT. Lembre-se de que há uma certa sobrecarga de desempenho na análise do valor da cadeia de caracteres.

TRY_PARSE depende da presença do CLR (Common Language Runtime) do .NET Framework.

Essa função não será remota uma vez que ela depende da presença do CLR. Uma função remota que exige o CLR provocará um erro no servidor remoto.

Mais informações sobre o parâmetro data_type

Os valores para o parâmetro data_type serão restritos aos tipos mostrados na tabela a seguir, juntamente com estilos. As informações de estilo são fornecidas para ajudar a determinar que tipos de padrões são permitidos. Para obter mais informações sobre estilos, veja a documentação do .NET Framework para as enumerações System.Globalization.NumberStyles e DateTimeStyles.

Categoria Type Tipo .NET Estilos usados
Numérico BIGINT Int64 NumberStyles.Number
Numérico INT Int32 NumberStyles.Number
Numérico SMALLINT Int16 NumberStyles.Number
Numérico TINYINT Byte NumberStyles.Number
Numérico decimal Decimal NumberStyles.Number
Numérico numeric Decimal NumberStyles.Number
Numérico FLOAT Double NumberStyles.Float
Numérico real Single NumberStyles.Float
Numérico SMALLMONEY Decimal NumberStyles.Currency
Numérico money Decimal NumberStyles.Currency
Data e hora date Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Data e hora time TimeSpan DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Data e hora DATETIME Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Data e hora smalldatetime Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Data e hora datetime2 Datetime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Data e hora datetimeoffset DateTimeOffset DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Mais informações sobre o parâmetro culture

A tabela a seguir mostra os mapeamentos de idiomas do SQL Server para culturas do .NET Framework.

Nome completo Alias LCID Cultura específica
us_english Inglês 1033 pt-BR
Deutsch Alemão 1031 de-DE
Français Francês Etapas de resolução para o seguinte evento ID 1036 fr-FR
日本語 Japonês 1041 ja-JP
Dansk Dinamarquês 1030 da-DK
Español Espanhol 3082 es-ES
Italiano Italiano 1040 it-IT
Nederlands Holandês 1043 nl-NL
Norsk Norueguês 2068 nn-NO
Português Português 2070 pt-PT
Suomi Finlandês 1035 fi-FI
Svenska Sueco 1053 sv-SE
čeština Tcheco 1029 Cs-CZ
magyar Húngaro 1038 Hu-HU
polski Polonês 1045 Pl-PL
română Romeno 1048 Ro-RO
hrvatski Croata Etapas de resolução para o seguinte evento ID 1050 hr-HR
slovenčina Eslovaco 1051 Sk-SK
slovenski Esloveno Etapas de resolução para o seguinte evento ID 1060 Sl-SI
ελληνικά Grego 1032 El-GR
български Búlgaro 1026 bg-BG
русский Russo 1049 Ru-RU
Türkçe Turco 1055 Tr-TR
British British English 2057 en-GB
eesti Estoniano 1061 Et-EE
latviešu Letão Etapas de resolução para o seguinte evento ID 1062 lv-LV
lietuvių Lituano 1063 lt-LT
Português (Brasil) Brasileiro 1046 pt-BR
繁體中文 Chinês tradicional 1028 zh-TW
한국어 Coreano 1042 Ko-KR
简体中文 Chinês simplificado 2052 zh-CN
Árabe Árabe 1025 ar-SA
ไทย Tailandês 1054 Th-TH

Exemplos

a. Exemplo simples de TRY_PARSE

SELECT TRY_PARSE('Jabberwokkie' AS datetime2 USING 'en-US') AS Result;  

Veja a seguir o conjunto de resultados.

Result  
---------------  
NULL  
  
(1 row(s) affected)  

B. Detectando nulos com TRY_PARSE

SELECT  
    CASE WHEN TRY_PARSE('Aragorn' AS decimal USING 'sr-Latn-CS') IS NULL  
        THEN 'True'  
        ELSE 'False'  
END  
AS Result;  

Veja a seguir o conjunto de resultados.

Result  
---------------  
True  
  
(1 row(s) affected)  

C. Usando IIF com TRY_PARSE e configuração de cultura implícita

SET LANGUAGE English;  
SELECT IIF(TRY_PARSE('01/01/2011' AS datetime2) IS NULL, 'True', 'False') AS Result;

Veja a seguir o conjunto de resultados.

Result  
---------------  
False  
  
(1 row(s) affected)  

Confira também

PARSE (Transact-SQL)
Funções de conversão (Transact-SQL)
TRY_CONVERT (Transact-SQL)
CAST e CONVERT (Transact-SQL)