TRY_PARSE (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Devuelve el resultado de una expresión, traducido al tipo de datos solicitado, o NULL si se produce un error en la conversión en SQL Server. Use TRY_PARSE solo para convertir de tipos de cadena a tipos de fecha y hora y de número.

Convenciones de sintaxis de Transact-SQL

Sintaxis

TRY_PARSE ( string_value AS data_type [ USING culture ] )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

string_value
Valor nvarchar(4000) que representa el valor con formato que se va a analizar en el tipo de datos especificado.

string_value debe ser una representación válida del tipo de datos solicitado; en caso contrario, TRY_PARSE devuelve NULL.

data_type
Literal que representa el tipo de datos solicitado para el resultado.

culture
Cadena opcional que identifica la referencia cultural en la que se da formato a string_value.

Si no se proporciona el argumento culture, se usará el idioma de la sesión actual. Este idioma se establece implícitamente o explícitamente mediante la instrucción SET LANGUAGE. culture acepta cualquier referencia cultural compatible con .NET Framework; no se limita a los idiomas admitidos explícitamente por SQL Server. Si el argumento culture no es válido, PARSE desencadena un error.

Tipos de valor devuelto

Devuelve el resultado de la expresión, traducido al tipo de datos solicitado, o NULL si se produce un error en la conversión.

Observaciones

Use TRY_PARSE solo para convertir de tipos de cadena a tipos de fecha y hora y de número. Para las conversiones de tipos generales, siga usando CAST o CONVERT. Tenga en cuenta que hay cierta sobrecarga de rendimiento al analizar el valor de cadena.

TRY_PARSE se basa en la presencia de Common Language Runtime (CLR) de .NET Framework.

Esta función no se enviará de forma remota puesto que depende de la presencia del CLR. El envío remoto de una función que necesita el CLR produciría un error en el servidor remoto.

Más información sobre el parámetro data_type

Los valores del parámetro data_type están restringidos a los tipos que aparecen en la tabla siguiente, junto con estilos. La información de estilo se proporciona como ayuda para determinar los tipos de modelos permitidos. Para más información sobre los estilos, vea la documentación de .NET Framework para las enumeraciones System.Globalization.NumberStyles y DateTimeStyles .

Category Tipo Tipo de .NET Estilos usados
Numeric bigint Int64 NumberStyles.Number
Numeric int Int32 NumberStyles.Number
Numeric SMALLINT Int16 NumberStyles.Number
Numeric TINYINT Byte NumberStyles.Number
Numeric Decimal Decimal NumberStyles.Number
Numeric NUMERIC Decimal NumberStyles.Number
Numeric FLOAT Double NumberStyles.Float
Numeric real Single NumberStyles.Float
Numeric SMALLMONEY Decimal NumberStyles.Currency
Numeric money Decimal NumberStyles.Currency
Fecha y hora date DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Fecha y hora time TimeSpan DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Fecha y hora datetime DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Fecha y hora smalldatetime DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Fecha y hora datetime2 DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Fecha y hora datetimeoffset DateTimeOffset DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Más información sobre el parámetro culture

En la tabla siguiente se muestran las asignaciones de los idiomas de SQL Server a las referencias culturales de .NET Framework.

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

Ejemplos

A. Ejemplo simple de TRY_PARSE

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

El conjunto de resultados es el siguiente:

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

B. Detectar valores NULL con TRY_PARSE

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

El conjunto de resultados es el siguiente:

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

C. Usar IIF con TRY_PARSE y la configuración implícita de referencia cultural

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

El conjunto de resultados es el siguiente:

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

Consulte también

PARSE (Transact-SQL)
Funciones de conversión (Transact-SQL)
TRY_CONVERT (Transact-SQL)
CAST y CONVERT (Transact-SQL)