PARSE (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis) SimBanco de Dados SQL do Azure SimInstância Gerenciada do Azure SQL

Retorna o resultado de uma expressão, convertida no tipo de dados solicitado no SQL Server.

Ícone de link do tópico Convenções da sintaxe Transact-SQL

Sintaxe

PARSE ( string_value AS data_type [ USING culture ] )  

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

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

string_value deve ser uma representação válida do tipo de dados solicitado, ou PARSE gera um erro.

data_type
Valor 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, convertida no tipo de dados solicitado.

Comentários

Os valores nulos transmitidos como argumentos para PARSE são tratados de dois modos:

  1. Se uma constante nula for transmitida, um erro ocorrerá. Um valor nulo não pode ser analisado em um tipo de dados diferente de maneira cultural.

  2. Se um parâmetro com um valor nulo for transmitido no momento da execução, um valor nulo será retornado, para evitar o cancelamento do lote inteiro.

Use PARSE somente para converter de 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.

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 de .NET Framework 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 1046 pt-BR
Deutsch Alemão 1031 de-DE
Français Francês 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 1.050 hr-HR
slovenčina Eslovaco 1051 Sk-SK
slovenski Esloveno 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 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. PARSE em datetime2

SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'en-US') AS Result;  

Este é o conjunto de resultados.

Result  
---------------  
2010-12-13 00:00:00.0000000  
  
(1 row(s) affected)  

B. PARSE com símbolo de moeda

SELECT PARSE('€345,98' AS money USING 'de-DE') AS Result;  

Este é o conjunto de resultados.

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

C. PARSE com configuração implícita de idioma

-- The English language is mapped to en-US specific culture  
SET LANGUAGE 'English';  
SELECT PARSE('12/16/2010' AS datetime2) AS Result;  

Este é o conjunto de resultados.

Result  
---------------  
2010-12-16 00:00:00.0000000  
  
(1 row(s) affected)