Improve company productivity with a Business Account.Sign Up

x
?
Solved

convert int to decimal in sql

Posted on 2009-05-11
5
Medium Priority
?
1,709 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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Sometimes MS breaks things just for fun... In Access 2003, only the maximum allowable SQL string length could cause problems as you built a recordset. Now, when using string data in a WHERE clause, the 'identifier' maximum is 128 characters. So, …
Exchange database can often fail to mount thereby halting the work of all users connected to it. Finding out why database isn’t mounting is crucial and getting the server back online. Stellar Phoenix Mailbox Exchange Recovery is a champion product t…
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Watch the video of Kernel Migrator for SharePoint, which demonstrate the process easily of migration from SharePoint to SharePoint, OneDrive for Business & Google Drive servers, Public Folder to SharePoint, File Server to SharePoint. The tool has va…

606 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