Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Функция
Область применения:
Databricks SQL
Databricks Runtime 11.3 LTS и выше
Возвращает значение expr, приведенное к DECIMAL с помощью форматирования fmt, или NULL, если expr не соответствует формату.
Синтаксис
try_to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
Аргументы
-
expr— строковое (STRING) выражение, представляющее число.exprможет включать начальные или конечные пробелы. -
fmt— строковый литерал, задающий ожидаемый форматexpr.
Возвраты
ДЕСЯТИЧНОЕ(p, s), где p — общее количество цифр (0 или 9), а s — количество цифр после запятой, или 0, если после запятой цифр нет.
fmt может включать следующие элементы (регистр не имеет значения):
0или9Указывает ожидаемую цифру между
0и9.0слева от десятичных точек указывает, чтоexprимеет по меньшей мере столько же цифр.9в начале указывает, чтоexprможет опустить такие цифры.exprне может быть больше, чем это разрешает число цифр слева от десятичной точки.Цифры справа от десятичной точки указывают максимальное число цифр, которое может иметь
exprсправа от десятичной точки по сравнению с указаннымfmtчислом..илиDУказывает позицию десятичной точки.
exprможет не включать десятичную точку.,илиGУказывает позицию разделителя группировки (тысяч)
,. Справа и слева от каждого разделителя группирований должна находиться цифра0или9.exprдолжно соответствовать разделителю группирований, связанным с размером числа.Lили$Указывает расположение знака валюты
$. Этот символ может быть указан только один раз.SилиMIУказывает позицию необязательного знака "+" или "-" для
Sи "-" только дляMI. Эта директива может быть указана только один раз.PRУказывает, что
exprозначает отрицательное число с заключающими угловыми скобками (<1>).
Если expr содержит какие-либо символы, отличные от 0–9 или разрешенные в fmt, возвращается NULL.
Если требуется строгий синтаксис, используйте to_number().
Примеры
-- The format expects:
-- * an optional sign at the beginning,
-- * followed by a dollar sign,
-- * followed by a number between 3 and 6 digits long,
-- * thousands separators,
-- * up to two dight beyond the decimal point.
> SELECT try_to_number('-$12,345.67', 'S$999,099.99');
-12345.67
-- Plus is optional, and so are fractional digits.
> SELECT try_to_number('$345', 'S$999,099.99');
345.00
-- The format requires at least three digits.
> SELECT to_number('$45', 'S$999,099.99');
Error: Invalid number
-- The format requires at least three digits.
> SELECT try_to_number('$45', 'S$999,099.99');
NULL
-- The format requires at least three digits
> SELECT try_to_number('$045', 'S$999,099.99');
45.00
-- Using brackets to denote negative values
> SELECT try_to_number('<1234>', '999999PR');
-1234