Функция SQL Server TRY_PARSE

В этом руководстве вы узнаете, как использовать функцию SQL Server TRY_PARSE() для преобразования строки в типы даты/времени и числа.

Обзор функции SQL Server TRY_PARSE()

Функция TRY_PARSE() используется для перевода результата выражения в запрошенный тип данных. Она возвращает NULL, если приведение не удается.

Вот синтаксис функции TRY_PARSE():

TRY_PARSE( expression AS data_type [ USING culture ] )  

В этом синтаксисе:

  • выражение возвращает строковое значение NVARCHAR(4000).
  • data_type представляет собой тип данных, запрошенный для результата.
  • culture — необязательная строка, указывающая культуру, в которой форматируется выражение. По умолчанию используется язык текущего сеанса. Обратите внимание, что культура не ограничивается теми, которые поддерживаются SQL; она может принимать любую культуру, поддерживаемую .NET Framework.

Примеры функции SQL Server TRY_PARSE()

Давайте рассмотрим несколько примеров использования функции TRY_PARSE().

1) Пример использования функции SQL Server TRY_PARSE() для преобразования строки в дату

В этом примере функция TRY_PARSE() используется для преобразования строки «14 апреля 2019 г.» в дату:

SELECT 
    TRY_PARSE('14 April 2019' AS date) result;

Вот результат:

result
----------
2019-04-14
(1 row affected)

2) Пример использования функции SQL Server TRY_PARSE() для преобразования строки в число

В следующем примере функция TRY_PARSE() используется для преобразования строки «-1250» в целое число:

SELECT 
    TRY_PARSE('-1250' AS INT) result;

Ниже показан результат:

result
-----------
-1250
(1 row affected)

Этот оператор возвращает NULL, поскольку функция TRY_PARSE() не может преобразовать строку «ABC» в десятичное число.

SELECT 
    TRY_PARSE('ABC' AS DEC) result;

Вывод будет выглядеть так:

result
-----------
NULL
(1 row affected)

3) Пример использования функции SQL Server TRY_PARSE() с выражением CASE

В этом примере функция TRY_PARSE() с CASE используется для проверки выражения и возврата соответствующего сообщения в случае успешного или неудачного приведения.

SELECT 
    CASE
        WHEN TRY_PARSE('Last year' AS DATE) IS NULL
        THEN 'Cast failed'
        ELSE 'Cast succeeded'
    END AS result;

Ниже показан результат:

result
--------------------
Cast failed
(1 row affected)

В этом руководстве вы узнали, как использовать функцию SQL Server TRY_PARSE() для преобразования строки в типы даты/времени и числа.

Мирослав С.

Автор статей, ИБ-специалист