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


TRY_PARSE (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечную точку аналитики SQL Azure Synapse Analytics в хранилище Microsoft Fabric в 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.

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

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

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

Замечания

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

Для выполнения инструкции TRY_PARSE требуется среда CLR платформы .NET Framework.

Данная функция не будет работать удаленно, поскольку возможность ее работы зависит от наличия среды 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 Байт NumberStyles.Number
Числовое десятичное Десятичное число NumberStyles.Number
Числовое numeric Десятичное число NumberStyles.Number
Числовое с плавающей запятой Двойной NumberStyles.Float
Числовое real Одна NumberStyles.Float
Числовое smallmoney Десятичное число NumberStyles.Currency
Числовое money Десятичное число NumberStyles.Currency
Дата и время Дата Дата/время DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время Время TimeSpan DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время datetime DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время smalldatetime Дата/время DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время datetime2 Дата/время DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Дата и время datetimeoffset DateTimeOffset DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Дополнительные сведения о параметре культуры

В следующей таблице показаны сопоставления языков 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 British English 2057 en-GB
eesti Эстонский 1061 Et-EE
latviešu Латышский 1062 lv-LV
lietuvių Литовский 1063 lt-LT
Português (Brasil) Бразильский 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;  

Вот результирующий набор.

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

B. Обнаружение значений NULL с помощью TRY_PARSE

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

Вот результирующий набор.

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

C. Использование функции IIF с TRY_PARSE и неявная установка культуры

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

Вот результирующий набор.

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

См. также

PARSE (Transact-SQL)
Функции преобразования (Transact-SQL)
TRY_CONVERT (Transact-SQL)
CAST и CONVERT (Transact-SQL)