Преобразование числового выражения в символьный вид
Синтаксис
to_char(< значение >[,< формат >])
< значение >
– значение типа SMALLINT, INTEGER, BIGINT, NUMERIC, REAL или DOUBLE;
< формат >
– строковый литерал, задающий формат символьного представления в виде шаблона:
[FM][< S >][< $ >][{< символ >[.< символ >]} | {< цифра >[.< цифра >]EEEE}]
< символ >::= < цифра > | , | X
< цифра >::= '0'|'9'
'0' – принудительный вывод незначащих нулей
'9' – принудительный вывод ведущих пробелов вместо незначащих нулей и незначащих нулей после запятой
FM – вывод без ведущих пробелов
S – принудительный вывод знака '+'/'-'
$ – принудительный вывод '$'
. – децимальная точка
, – разделитель групп цифр в целой части выводимого значения
X – вывод в шестнадцатеричной форме
EEEE – вывод в экспоненциальной форме
Ограничения:
-
до запятой – не более 32 позиций;
-
после запятой – не более 15 позиций;
-
групп цифр – не более 32.
Примеры
c:=to_char(123I, "XX"); execute "insert into test_to_char_res values(?, ?);" using 7B, c; c:=to_char(2063597568I, "XXXXXXXXX"); execute "insert into test_to_char_res values(?, ?);" using 7B000000, c; c:=to_char(123B, "XX"); execute "insert into test_to_char_res values(?, ?);" using 7B, c; c:=to_char(2063597568B, "XXXXXXXXX"); execute "insert into test_to_char_res values(?, ?);" using 7B000000, c; c:=to_char(34621422143503227, "XXXXXXXXXXXXXXX"); execute "insert into test_to_char_res values(?, ?);" using 7B0000007B7B7B, c; c:=to_char(+123.45N, "XX"); execute "insert into test_to_char_res values(?, ?);" using 7B, c; c:=to_char(+2063597568.45N, "XXXXXXXXX"); execute "insert into test_to_char_res values(?, ?);" using 7B000000, c; c:=to_char(-123.45N, "XXX"); execute "insert into test_to_char_res values(?, ?);" using ####, c; // /* EEEE */ c:=to_char(+123.456N, "9.9EEEE"); execute "insert into test_to_char_res values(?, ?);" using 1.2E+02, c; c:=to_char(+123.456N, "FM9.9EEEE"); execute "insert into test_to_char_res values(?, ?);" using 1.2E+02, c; c:=to_char(1000.0D, "FM9.9EEEE"); //+1E+03D execute "insert into test_to_char_res values(?, ?);" using 1.E+03, c; c:=to_char(-0.001D, "FM9.9EEEE"); //-1E-03D execute "insert into test_to_char_res values(?, ?);" using -1.E-03, c; c:=to_char(1.1111D, "S$9EEEE"); execute "insert into test_to_char_res values(?, ?);" using +$1E+00, c; c:=to_char(-1.1111D, "S$9EEEE"); execute "insert into test_to_char_res values(?, ?);" using -$1E+00, c; c:=to_char(-1.1111D, "FMS$9EEEE"); execute "insert into test_to_char_res values(?, ?);" using -$1E+00, c; c:=to_char(-1.1121D, "FMS$9.999EEEE"); execute "insert into test_to_char_res values(?, ?);" using -$1.112E+00, c;