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


TRY_PARSE (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

TRY_PARSE ( string_value AS data_type [ USING culture ] )

Аргументы

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

    string_value должно быть допустимым представлением требуемого типа данных, или инструкция TRY_PARSE возвратит значение NULL.

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

  • culture
    Дополнительная строка, идентифицирующая язык и региональные параметры, в которых форматируется string_value.

    Если аргумент culture не указан, то используется язык текущего сеанса. Язык может быть задан неявно или явно с использованием инструкции SET LANGUAGE. Значение culture принимает любой язык и региональные параметры, поддерживаемые .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

Используемые стили

Numeric

bigint

Int64

NumberStyles.Number

Числовой

int

Int32

NumberStyles.Number

Числовой

smallint

Int16

NumberStyles.Number

Числовой

tinyint

Byte

NumberStyles.Number

Числовой

decimal

Десятичный

NumberStyles.Number

Числовой

numeric

Десятичный

NumberStyles.Number

Числовой

float

Двойной

NumberStyles.Float

Числовой

real

Одиночный

NumberStyles.Float

Числовой

smallmoney

Десятичный

NumberStyles.Currency

Числовой

money

Десятичный

NumberStyles.Currency

Дата и время

date

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

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

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

Полное имя

Псевдоним

LCID

Конкретная культура

us_english

Английский

1033

ru-RU

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

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 (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 'ru-RU') AS Result;

Ниже приводится результирующий набор.

Result
---------------
NULL

(1 row(s) affected)

Б.Обнаружение значений 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)

В.Использование функции 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)