Home Database Mysql Tutorial oracle保留两位小数解决方案

oracle保留两位小数解决方案

Jun 07, 2016 pm 05:55 PM
reserve decimal

公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可

公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可.

个人认为比较方便的一种
select decode(n_jg,0,'0.00',trim(to_char(n_jg,'9999999.99'))) from tbl
如果只是检索,可是使用:
1、select trunc(CUR_SUM,2) from data_record;
将小数转化成百分比=> round(zcbj/zs*100)||'%' ==trunc((zcbj/zs),2)*100||'%'
2、如果想更新数据,可以使用:
update data_record set CUR_SUM=trunc(CUR_SUM,2) where REC_NO=123

方法一:使用to_char的fm格式
to_char(round(data.amount,2),'FM9999999999999999.00') as amount
不足之处是,如果数值是0的话,会显示为.00而不是0.00。
另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。
解决方式如下:
select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;

方法二:使用case when then else end进行各种情况的判断处理
case
when instr(to_char(data.amount), '.') data.amount || '.00'
when instr(to_char(data.amount), '.') + 1 = length(data.amount) then
data.amount || '0'
else
to_char(round(data.amount, 2))
end as amount_format

方法三:可以使用Oracle自带的参数设置
column amount format l9999999999.99
此方法的不足是,format中的小数点左面的9的个数要已知,否则会出现超过的数字显示为########的情况。
另外一个问题是,使用column时,设置生效是session级还是system级,需要注意。
也许某张表的数值列不总是要求所有的地方显示时,都是小数点后两位的格式,此时只能使用session级,但是有个数据库连接会话超时的问题,如果不是使用到system级,不建议使用该方法。

方法四:使用to_char+trim的方式
select trim(to_char(1234,'99999999999999.99')) from dual;
或者
select ltrim(trim(to_char(1234.525,'00000000000000.00')),'0') from dual;
此处使用了14个9或者14个0的格式,建议使用14个9的方式,方便些。方法四的不足之处是:
如果数值是0的话,转化之后为.00而不是0.00,补救措施是,decode一下。
另一需要注意的是,格式中小数点左边9或者0的个数要够多,负责查询的数字会显示为n个符号“#”。
如下:
select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
select decode(salary,0,'0.00',ltrim(trim(to_char(salary,'00000000000000.00')),'0')) from can_do;
结论:建议使用方法四中的trim+to_char的方式或者方法一的补救之后的方式,而且最好使用小数点左边n个9的方式,不要使用0的方式,否则,要多一步trim处理。
即:select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to convert integer to decimal in javascript How to convert integer to decimal in javascript Nov 03, 2021 pm 05:59 PM

In JavaScript, you can use the toFixed() function to convert an integer into a decimal. This function can convert an integer into a number with a specified number of decimal places; the syntax is "number.toFixed(x)", and the parameter "x" specifies the number of decimal places. .

Python's round() function: retain decimals with specified digits Python's round() function: retain decimals with specified digits Nov 18, 2023 pm 05:35 PM

Python's round() function: retaining a specified number of decimal places, requiring specific code examples Overview: In Python programming, floating point numbers often need to be rounded to retain a specified number of decimal places. To solve this problem, Python provides the round() function. This article will introduce the usage of the round() function and provide some specific code examples. Usage of round() function: The round() function is a built-in function of Python, which is used to quadruple floating-point numbers.

What will be retained in the second round of the Elden French Tour? What will be retained in the second round of the Elden French Tour? Mar 11, 2024 pm 02:31 PM

When playing the game in Elden's Ring, players can also open the second game after clearing the level. Many players don't know what will be retained in the second game. Things related to the character's attributes and combat effectiveness will be retained in the second game. What will be retained in the second round of Elden's Circle? The first and second rounds will only inherit the level, equipment and props. 2. The level, equipment, weapons, prayers, magic, ashes, amulets, Dettol, war ashes, etc. of the second round of Elden's Circle will be retained. 3. Everything in the equipment list, which can be simply understood as the equipment list, is reserved, including the enhancement level of the weapon. 4. All campfires and plot-related props will not be inherited, collection elements on the map will not be retained, and big runes will not be retained.

Will the Win11 upgrade retain the details of the original software? Will the Win11 upgrade retain the details of the original software? Dec 31, 2023 pm 02:49 PM

Software is the most important part when we use computers. Essentially, most people use computers to use these software. Therefore, if the software is cleared when upgrading to win11, it will cause great inconvenience. However, if we can upgrade win11 normally, all software will be retained. You don’t need to worry. Let’s take a look below. Will the software be retained after upgrading to win11? Answer: All software will be retained. 1. In the official Q&A, Microsoft stated that upgrading to win11 will retain all files and data, which of course includes all software. 2. Therefore, everyone can upgrade the win11 system with confidence. 3. However, this does not actually mean that we can not back up important files at all. 4. Because win11 is finished

How to keep only win10 professional version image How to keep only win10 professional version image Jan 02, 2024 pm 06:37 PM

Some users will encounter some problems when downloading and installing the win10 system. For example, if the installation becomes a professional version, we can download the system version you want to use and reinstall it. What should I do if the win10 image only retains the professional version? Answer: You can reinstall a system version. It is recommended to choose Berry one-click installation. You can directly download and install the software and then select the system version you want and then make a selection. 1. Click the blue font at the back to enter the download page. >>>2. After entering, download the software and operate it. For detailed steps, you can view this article. >>>Which one is better, Win10 Professional Edition or Home Edition? Answer: See

How does php handle decimals? Introduction to various methods How does php handle decimals? Introduction to various methods Mar 28, 2023 pm 03:45 PM

PHP is one of the most popular programming languages ​​for web development. In PHP, the processing of decimals is very important, because in actual programming work, we often need to perform precise operations on decimals. This article will introduce several ways to deal with decimals in order to perform decimal operations more efficiently.

Harnessing the PHP BCMath Extension: Opening the Door to High-Precision Mathematics Harnessing the PHP BCMath Extension: Opening the Door to High-Precision Mathematics Feb 23, 2024 am 09:22 AM

The PHPBCMath extension is a powerful tool in the PHP standard library. It provides a rich function library that can handle complex calculations such as large numbers, decimals, and fractions. Compared with PHP's built-in mathematical operators and functions, BCMath extensions can provide higher precision and a wider range of operations to meet the needs of high-precision mathematical calculations in various fields such as science, engineering, and finance. In order to use the BCMath extension, you need to include the following code in your PHP script: Among them, the bcscale() function is used to set the number of digits after the decimal point. The default value is 0, which means no decimals are retained. You can adjust this value as needed to control calculation accuracy

Translate the following into Chinese: Print the first k decimal places of 1/n in a C program, where n is a positive integer Translate the following into Chinese: Print the first k decimal places of 1/n in a C program, where n is a positive integer Aug 28, 2023 pm 07:29 PM

Enter a number N such that 1/N will return the output generated in the form specified in decimal until the limit is reached. It's easy to use floating point numbers, but the challenge is not to use them. Input −n=5k=5 Output −20000 This means if n=5 and k=5 divided by 1/5 the output should be displayed to 5 decimal places. AlgorithmStartStep1->Declareintvariablento9andkto7andremainto1andiStep2->Loopforito0andi<kandi++ Print((10*remain)/n)&n

See all articles