В этом руководстве вы узнаете, как использовать функцию SQL Server TRY_CAST() для приведения значения одного типа к другому.
- Обзор функции SQL Server TRY_CAST()
- TRY_CAST() против CAST()
- Примеры функции SQL Server TRY_CAST()
- A) Пример TRY_CAST() возвращает NULL
- B)TRY_CAST() вызывает ошибку пример
- C) Примеры использования функции TRY_CAST() для преобразования строки в десятичную форму
- D) Примеры использования функции TRY_CAST() для преобразования строки в целое число
- E) Пример использования функции TRY_CAST() для преобразования даты и времени в дату или время
Обзор функции SQL Server TRY_CAST()
Функция TRY_CAST() преобразует значение одного типа в другой. Она возвращает NULL, если преобразование не удается.
Ниже показан синтаксис функции TRY_CAST():
TRY_CAST( expression AS data_type [( length ) ] )
Функция TRY_CAST() принимает два аргумента:
- data_type — любой допустимый тип данных, к которому функция приведет выражение.
- выражение — это преобразуемое значение.
Функция TRY_CAST() принимает входное значение и пытается привести его к значению указанного типа данных. Она возвращает значение в указанных данных, если приведение выполнено успешно; в противном случае она возвращает NULL. Но если вы запросите преобразование, которое явно не разрешено, функция TRY_CAST() завершится ошибкой.
TRY_CAST() против CAST()
Если приведение не удается, функция TRY_CAST() возвращает NULL, а функция CAST() выдает ошибку.
Вы используете функции обработки NULL или выражения, такие какISNULL(), COALESCE или CASE, чтобы обработать результат функции TRY_CAST() в случае, если приведение не удалось. С другой стороны, вы используете оператор TRY…CATCH для обработки результата функции CAST() , если приведение не удалось.
Примеры функции SQL Server TRY_CAST()
Давайте рассмотрим несколько примеров использования функции TRY_CAST().
A) Пример TRY_CAST() возвращает NULL
В следующем примере показано, как функция TRY_CAST() возвращает NULL в случае сбоя приведения типа:
SELECT CASE WHEN TRY_CAST('test' AS INT) IS NULL THEN 'Cast failed' ELSE 'Cast succeeded' END AS Result;
Вот что получилось.
Result ----------- Cast failed (1 row affected)
B)TRY_CAST() вызывает ошибку пример
В этом примере возвращается ошибка, поскольку число невозможно преобразовать в тип данных XML:
SELECT TRY_CAST(30.5 AS XML);
Вот ошибка:
Explicit conversion from data type numeric to xml is not allowed.
C) Примеры использования функции TRY_CAST() для преобразования строки в десятичную форму
В следующем примере функция TRY_CAST() используется для преобразования строки в десятичное число:
SELECT TRY_CAST('12.34' AS DECIMAL(4, 2)) Result
Вот результат:
Result ---------- 12.34
Вот еще один пример:
SELECT TRY_CAST('12.345' AS DECIMAL(4,2)) Result;
Результат округляется до 12,35:
Result ----------- 12.35 (1 row affected)
В этом примере возвращается NULL, поскольку функция TRY_CAST() не может преобразовать строку «1234.5» в тип DECIMAL(4, 2):
SELECT TRY_CAST('1234.5' AS DECIMAL(4, 2)) Result;
Вот что получилось:
Result ----------- NULL (1 row affected)
D) Примеры использования функции TRY_CAST() для преобразования строки в целое число
В следующем примере функция TRY_CAST() используется для преобразования строки в целое число:
SELECT TRY_CAST('100' AS INT) Result;
Вот результат:
Result ----------- 100 (1 row affected)
В этом примере возвращается NULL, поскольку приведение не удалось:
SELECT TRY_CAST('100.5' AS INT) Result;
Вот что получилось:
Result ----------- NULL (1 row affected)
E) Пример использования функции TRY_CAST() для преобразования даты и времени в дату или время
В следующем примере функция TRY_CAST() используется для преобразования текущей системной даты и времени в значение даты:
SELECT TRY_CAST(GETDATE() AS DATE) Result;
Вот что получилось:
Result ---------- 2019-04-28 (1 row affected)
Аналогично вы можете использовать функцию TRY_CAST() для преобразования текущей системной даты и времени в значение времени:
SELECT TRY_CAST(GETDATE() AS TIME) Result;
Ниже показан результат:
Result ---------------- 17:36:37.5900000 (1 row affected)
В этом руководстве вы узнали, как использовать функцию SQL Server TRY_CAST() для приведения значения одного типа к другому.