Поделиться через


TRY_PARSE (Transact-SQL)

Относится к:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL analytics endpoint в Microsoft FabricWarehouse в Microsoft FabricSQL база данных в Microsoft Fabric

Возвращает результат выражения, переводится в запрашиваемый тип данных или NULL если каст не удаётся в SQL Server. Используйте TRY_PARSE только для преобразования строк в дату/время и типы чисел.

Соглашения о синтаксисе Transact-SQL

Синтаксис

TRY_PARSE ( string_value AS data_type [ USING culture ] )

Аргументы

string_value

Значение nvarchar(4000), представляющее форматированное значение для преобразования в указанный тип данных.

string_value должен быть действительным представлением запрошенного типа данных или TRY_PARSE возвращать null.

data_type

Литерал, представляющий тип данных, запрошенный в качестве результата.

Язык и региональные параметры

Дополнительная строка, идентифицирующая культуру, в которой форматируется string_value.

Если аргумент языка и региональных параметров не указан, используется язык текущего сеанса. Этот язык устанавливается либо неявно, либо явно с помощью этого SET LANGUAGE утверждения. Культура принимает любую культуру, поддерживаемую .NET Framework. Это не ограничивается языками, явно поддерживаемыми SQL Server. Если аргумент языка и региональных параметров недействителен, PARSE вызывает ошибку.

Типы возвращаемых данных

Возвращает результат выражения, переводится в запрошенный тип данных или NULL , если каст не удаётся.

Замечания

Используйте TRY_PARSE только для преобразования строк в дату/время и типы чисел. Для общих преобразований типов продолжайте использовать CAST или CONVERT. Имейте в виду, что при парсинге значения строки есть определённые расходы на производительность.

TRY_PARSE опирается на наличие среды выполнения на общим языке .NET Framework (CLR).

Эта функция не может быть удалена, так как она зависит от наличия среды CLR. Удаленный вызов функции, требующей наличия среды CLR, приведет к ошибке на удаленном сервере.

Дополнительная информация о data_type параметре

Значения параметра data_type ограничиваются списком типов, приведенным в следующей таблице, включая стили. Представленные сведения о стилях позволяют определить, какие типы шаблонов разрешены. Для получения дополнительной информации о стилях см. документацию .NET Framework для System.Globalization.NumberStyles перечисления DateTimeStyles и перечислений.

Категория Тип Тип .NET Используемые стили
Числовое bigint Int64 NumberStyles.Number
Числовое int Int32 NumberStyles.Number
Числовое smallint Int16 NumberStyles.Number
Числовое tinyint Byte NumberStyles.Number
Числовое decimal Decimal NumberStyles.Number
Числовое numeric Decimal NumberStyles.Number
Числовое float Double NumberStyles.Float
Числовое реальный Single NumberStyles.Float
Числовое smallmoney Decimal NumberStyles.Currency
Числовое деньги Decimal NumberStyles.Currency
Дата и время дата DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время time TimeSpan DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время datetime DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время smalldatetime DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время datetime2 DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время datetimeoffset DateTimeOffset DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дополнительная информация о culture параметре

В следующей таблице показаны сопоставления языков SQL Server с платформа .NET Framework языками и региональными параметрами.

ФИО Псевдоним LCID Конкретная культура
us_english Английский 1033 en-US
Deutsch Немецкий 1031 de-DE
Français Французский 1036 fr-FR
日本語 Японский 1041 ja-JP
Dansk датский 1030 da-DK
Español Испанский 3082 es-ES
Italiano Итальянский 1040 it-IT
Nederlands Голландский 1043 nl-NL
Norsk Норвежский 2068 nn-NO
Português Португальский 2070 pt-PT
Suomi Финский 1035 fi-FI
Svenska Шведский 1053 sv-SE
čeština чешский 1029 Cs-CZ
magyar Венгерский 1038 Hu-HU
polski Польский 1045 Pl-PL
română Румынский 1048 Ro-RO
hrvatski Хорватский 1050 hr-HR
slovenčina Словацкий 1051 Sk-SK
slovenski Словенский 1060 Sl-SI
ελληνικά Греческий 1032 El-GR
български Болгарский 1026 bg-BG
русский русский 1049 Ru-RU
Türkçe Турецкий 1055 Tr-TR
British Британский английский 2057 en-GB
eesti Эстонский 1061 Et-EE
latviešu Латышский 1062 lv-LV
lietuvių Литовский 1063 lt-LT
Português (Бразилия) Бразильский 1046 pt-BR
繁體中文 Традиционный китайский 1028 zh-TW
한국어 Корейский 1042 Ko-KR
简体中文 Упрощенный китайский 2052 zh-CN
Арабский Арабский 1025 ar-SA
ไทย Тайский 1054 Th-TH

Примеры

А. Базовый пример TRY_PARSE

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

Этот запрос возвращает результат .NULL

B. Обнажить нули с помощью TRY_PARSE

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

Этот запрос возвращает результат .True

В. Используйте IIF с TRY_PARSE и неявной культурой

SET LANGUAGE English;

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

Этот запрос возвращает результат .False