給數字左側自動占位補零
- digits函數:digits(參數)
digits里的參數必須是整型參數,可以是smallint,int,bigint,decimal,其中smallint占5位,int占10位,bigint占19位。decimal默認為5位,最多為31位可以表示為decimal(31)。也就說digits參數能夠容納的數字最多為31位,通常digits在參數不足10位的時候自動補零補齊到10位,等於10位的時候就返回10位,大於10位而小於19位的時候就自動補零補齊到19位,等於大於19位且小於31位的時候數字原封不動地返回不再自動補零。
-- 0000000003 10位
select digits(3) from dual;
-- 0000000000000000003 19位
select digits(cast(3 as bigint)) from dual;
-- 00003 5位
select digits(cast(3 as smallint)) from dual;
-- 0000000000000000000000000000003 31位
select digits(cast(3 as decimal(31))) from dual;
- 更常用的 自定義補零位數:digits(數字,截取位數)
-- 結果:03
select right(digits(3),2) from dual;
-- 結果:00000003 8位
select right(digits(3),8) from dual;
-- 通過cast函數將參數轉換為適合的delcimal類型
-- 結果:0000000000000000000003 22位
select right(digits(cast(3 as decimal(22))),22) from dual;
查看字符串長度
-- 查看字符串長度 結果:4
values length('1322');
字符串與數字類型相互轉換
digits函數返回一個代表數字的字符串。參數必須是一個表達式 ,返回整形,samllint,integer,bigint or decimal.如果參數可能是空的,結果也可能是空的。如果參數是空的 ,結果肯定是空的。
函數的返回值是沒有考慮參數的規格代表他的絕對值的固定長度的字符串,返回值不包括符號或者小數字符。 相反 他包括數字,如有必要 前導為零來填充。
-- 結果:3.4512432
values CHAR(3.4512432);
-- 結果:34512432
values digits(3.4512432);
-- 結果:3.14
values char(cast(3.14574 as decimal(8,2)));
-- 結果:4
values integer(trim('4.12313'));
-- 結果:5
values integer(trim('5'));
-- 結果:4
values cast(char('4.12313') as bigint);
-- 結果:4.12
values cast('4.12313' as decimal(8,2));
-- 結果:4.12313
values cast('4.12313' as double);
-- 結果:4.12
values cast(char(cast('4.12313' as decimal(8,2))) as double );