hive- how do I convert scientific notation to decimal value - hive

According to this accepted answer, I should change 1.2766E-10 to decimal like below:
select cast(1.2766E-10 as decimal(11, 10))
but it gives me, 1E-10. How can I disable scientific notation in Hive or how can I convert such small numbers in scientific notation to decimal values?

1.2766E-10 is -6.52984141779, so there are 12 numbers for precision and 11 numbers for scale.
select cast(1.2766E-10 as decimal(12, 11))

You are confusing scientific notation with Euler number.

Related

What to cast column to in order to have csv export not show scientific notation?

Currently, when I export the results of my query (to .csv) the SKU column gets converted to scientific notation. Is there anything I can cast my SKU column to in order to have it come out as the full string? Some SKUs are all numbers, some are all letters, and some are numbers and letters. A lot of the casts I've tried result in this type of error: Cannot cast '190198047908' to INT.
Often numeric works where int does not:
select cast(col as numeric(38, 0))
I don't know if there are decimal points, but the conversion to int suggests that you do not care about any digits to the right of the decimal point.

Remove zeros after two decimal places

I would like to remove zeros after two decimal places in DB2. I have more than 1000 rows for this column
For example
3.6900 needs to be converted to 3.69
I used cast in the query after my research and it gave me the correct result but I would like to understand what is DECIMAL(12,2) and how does this work ? Is there any better way to eliminate zeros?
SELECT CAST(CG.RATE AS DECIMAL(12,2)) AS test from fd.OFFERS CG
Please let me know.
what is DECIMAL(12,2) and how does this work?
The DECIMAL data type represents numbers with a specified decimal precision. You can read a description of the numeric data types:
A DECIMAL number is a packed decimal number with an implicit decimal point. The position of the decimal point is determined by the precision and the scale of the number. The scale, which is the number of digits in the fractional part of the number, cannot be negative or greater than the precision. The maximum precision is 31 digits.

Round a value to two decimal places in SQL

I am trying to round a value in SQL, here is the code that I have:
select round(600.000,2)
How do I get the value 600.00?
Instead of round() convert to a decimal:
select cast(600.000 + 0.5 as decimal(10, 2) )
round() changes the value but it might not change the type of the result. Hence, you might still see extra decimal points (depending on the database and the application). Converting to a decimal with two digits of precision converts both the value and the type.

SQL Server. How do i round a decimal considering all decimal digits

I'm trying to round a decimal and it seems like rounding in SQL Server only considers one digit after the last digit of rounding scale.
SELECT CAST(795.5921967249997 AS decimal(18,8))
--795.59219672
SELECT ROUND(795.5921967249997, 8)
--795.5921967200000
What I'm looking for is a fair rounding, that considers all digits. In example above I'm expecting 3 as 8-th decimal digit.
Can I do this without writing my own function?
If you want "3" in that position, then you are changing the rules of rounding. You can do this in two steps:
SELECT CAST(CAST(795.5921967249997 AS decimal(18, 9)) as decimal(18, 8))

How to convert decimal to scientific in SQL Server 2008 R2

I have a table named Product. The table looks like this:
ID Product Volume
1 xyz 4654.000000000000000
2 abc 121.000000000000000
I want to represent Volume in a scientific notation. Volume is of datatype decimal(20,8).
How can I do this conversion?
Normally, the formatting and presentation of data should be done by UI, on the client side, but if you insist...
DECLARE #t decimal(20,8) = 4654.000000000000000;
SELECT #t, CONVERT(nvarchar(32), CAST(#t as float), 2)
result
4654.00000000 4.654000000000000e+003
First CAST decimal to float (please note, it may loose precision), then CONVERT float to nvarchar using style 2:
Always 16 digits. Always use in scientific notation.
Note
float type has only 15 digits of precision, so it can't store your decimal(20,8) without loss of precision.
declare #t decimal(20,8)=132423423421.00000000
print cast(#t as float)
you can cast volume field to float in select statement and then you will get scientific notation of it as shown above.