?
Solved

convert int to decimal in sql

Posted on 2009-05-11
5
Medium Priority
?
1,707 Views
Last Modified: 2012-08-14
I have a int column with a value of 3250. I need to return a 32.50 value. How do I do this? whatever I tried seems to illeminates the 50.
0
Comment
Question by:sleiman
5 Comments
 
LVL 6

Expert Comment

by:bokist
ID: 24361879
something like this ??

select  my_field = (convert(float, 3250)) / 100
0
 
LVL 6

Expert Comment

by:bull_rider
ID: 24361930
Replace columnname and tablename accordingly in the attached code snippet

Hope this solves your issue.
Select (convert(float,columnname))/100) AS ReturnResult from tablename

Open in new window

0
 
LVL 9

Expert Comment

by:tculler
ID: 24362405
I'm more of a C#/C++ buff, but I'll give this a shot.

The way I'd do this in a programming language is convert the number to a String, and insert a decimal two places to the left of the end of it. That way, there's no risk of any loss of precission at all, and it makes things much simpler ;). I'll try and code it out, though my SQL is not top-notch. If this doesn't work for you, let me know, as the syntax varies from engine to engine.

SELECT (SUBSTRING(column, 0, LEN(column) + "." + SUBSTRING(column, LEN(column) - 2) AS Result FROM tblTableName;

I can't remember if Strings in SQL are 0-based or 1-based--if they're not 0-based, it should be a pretty easy fix, though ;)
0
 
LVL 41

Accepted Solution

by:
ralmada earned 1500 total points
ID: 24365122
Never convert to float. Float know as aproximate data type. Approximate numeric data types do not store the exact values specified for many numbers. It will give you wrong results most of the time. Use decimal instead. Check this out:
Select cast(columnname as decimal)/100.00 as yourresult from yourtable
 
More info on decimal and float datatype below:
http://msdn.microsoft.com/en-us/library/ms187912.aspx 
0
 

Author Comment

by:sleiman
ID: 24365357
Using the float conversion did not return the result that I needed.

(convert(float, 3250)) / 100  returns 32.0 and I need to get 32.50

(cast(3250 as decimal)/100.00) returns 32.50000

Final solution:
cast(columnname/100.00 as decimal(10,2)) return 32.50
0

Featured Post

Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Microsoft Jet database engine errors can crop up out of nowhere to disrupt the working of the Exchange server. Decoding why a particular error occurs goes a long way in determining the right solution for it.
Blockchain technology enhances society similar to the Internet. Its effects are broad, disruptive, and will boost global productivity.
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
The Relationships Diagram is a good way to get an overall view of what a database is keeping track of. It is also where relationships are defined. A relationship specifies how two tables connect to each other. As you build tables in Microsoft Ac…
Suggested Courses

578 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question