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