Compartir a través de


TRY_PARSE (Transact-SQL)

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de analítica SQL en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

Devuelve el resultado de una expresión, traducido al tipo de dato solicitado, o NULL si el cast falla en SQL Server. Úsalo TRY_PARSE solo para convertir de cadenas a fechas/hora y tipos de números.

Convenciones de sintaxis de Transact-SQL

Sintaxis

TRY_PARSE ( string_value AS data_type [ USING culture ] )

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 dato solicitado, o TRY_PARSE devuelve nulo.

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 de referencia cultural , se usa el idioma de la sesión actual. Este lenguaje se establece implícita o explícitamente mediante el uso de la SET LANGUAGE sentencia. la cultura acepta cualquier cultura soportada por el .NET Framework. No se limita a los lenguajes que soporta explícitamente SQL Server. Si el argumento de referencia cultural no es válido, PARSE genera un error.

Tipos de retorno

Devuelve el resultado de la expresión, traducido al tipo de dato solicitado, o NULL si falla el cast.

Observaciones

Úsalo TRY_PARSE solo para convertir de cadenas a fechas/hora y tipos de números. Para conversiones generales de tipos, continúe usando CAST o CONVERT. Ten en cuenta que hay cierta sobrecarga de rendimiento al analizar el valor de la cadena.

TRY_PARSE se basa en la presencia del lenguaje común de ejecución (CLR) .NET Framework.

Esta función no se puede remoto, ya que depende de la presencia de 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 data_type parámetro

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 estilos, consulte la documentación de .NET Framework para las System.Globalization.NumberStyles enumeraciones de y (y DateTimeStyles enumeraciones).

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 dinero 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 culture parámetro

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 en-US
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 Inglés británico 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 básico de TRY_PARSE

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

Esta consulta devuelve un resultado de NULL.

B. Detectar nulos con TRY_PARSE

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

Esta consulta devuelve un resultado de True.

C. Usa IIF con TRY_PARSE y un ajuste de cultura implícita

SET LANGUAGE English;

SELECT IIF (TRY_PARSE ('01/01/2011' AS DATETIME2) IS NULL, 'True', 'False') AS Result;

Esta consulta devuelve un resultado de False.