TRY_PARSE (Transact-SQL)
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 2012. 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 ] )
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; de lo 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 produce 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.
Comentarios
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 acerca del 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 obtener más información acerca de los estilos, vea las enumeraciones System.Globalization.NumberStyles y DateTimeStyles en la documentación de .NET Framework.
Categoría |
Tipo |
Tipo de .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 |
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 acerca del 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 |
Finlandés |
1035 |
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 Reino Unido |
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 |
Arabic |
Árabe |
1025 |
ar-SA |
ไทย |
Tailandés |
1054 |
Th-TH |
Ejemplos
A.Ejemplo simple de TRY_PARSE
SELECT TRY_PARSE('Jabberwokkie' AS datetime2 USING 'es-es') 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)