Normal money conversions will preserve individual pennies:

SELECT convert(varchar(30), moneyfield, 1)

The last parameter decides what the output format looks like:

0 (default) No commas every three digits to the left of the decimal point, and two digits to the right of the decimal point; for example, 4235.98.

1 Commas every three digits to the left of the decimal point, and two digits to the right of the decimal point; for example, 3,510.92.

2 No commas every three digits to the left of the decimal point, and four digits to the right of the decimal point; for example, 4235.9819.

If you want to truncate the pennies, and count in pounds, you can use rounding to the nearest pound, floor to the lowest whole pound, or ceiling to round up the pounds:

SELECT convert(int, round(moneyfield, 0))
SELECT convert(int, floor(moneyfield))
SELECT convert(int, ceiling(moneyfield))
Answer from Jonathan on Stack Overflow
🌐
Microsoft Learn
learn.microsoft.com › en-us › sql › t-sql › data-types › money-and-smallmoney-transact-sql
money and smallmoney (Transact-SQL) - SQL Server | Microsoft Learn
You don't need to enclose currency or monetary data in single quotation marks ('). While you can specify monetary values preceded by a currency symbol, SQL Server doesn't store any currency information associated with the symbol, it only stores the numeric value. ... You can experience rounding errors through truncation, when storing monetary values as money and smallmoney. Avoid using this data type if your money or currency values are used in calculations. Instead, use the decimal data type with at least four decimal places. When you convert to money from integer data types, units are assumed to be in monetary units.
🌐
W3Schools
w3schools.com › sql › func_sqlserver_convert.asp
SQL Server CONVERT() Function
SQL Examples SQL Editor SQL Quiz SQL Exercises SQL Server SQL Syllabus SQL Study Plan SQL Bootcamp SQL Certificate SQL Training ... The CONVERT() function converts a value (of any type) into a specified datatype.
Discussions

How to turn Money to Decimal? e.g. $1M to 1000000 and $2B to 2000000000?
I think you might need REGEXP_REPLACE to remove the $, CASE statements wherein if M, n (a whole number) * 1000000 or if B, n*1000000000 (inside the case statement, make sure to remove the B or M also). And just to make sure, do a CAST to make sure everything is int More on reddit.com
🌐 r/SQL
12
4
October 14, 2023
sql server 2008 - TSQL Cast the sum as Money - Stack Overflow
This is something that should be done on the presentation layer, but if you need to do this in sql you can use: '$'+convert(varchar(50), CAST(amount as money), -1) amount More on stackoverflow.com
🌐 stackoverflow.com
Conversion of currency stored as varchar to decimal – SQLServerCentral Forums
SQL DBA,SQL Server MVP(07, 08, 09) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies". ... NO! the old Sybase MONEY ... More on sqlservercentral.com
🌐 sqlservercentral.com
September 20, 2022
string - Microsoft SQL Server 2016 - Convert a varchar to money with a $ sign & 2 decimals - Stack Overflow
A table of financials has been provided to me with the following datatypes: billed varchar 9 allowed varchar 9 paid varchar 7 with the following columns and values: billed = 2555 allowed = 105... More on stackoverflow.com
🌐 stackoverflow.com
🌐
Reddit
reddit.com › r/sql › how to turn money to decimal? e.g. $1m to 1000000 and $2b to 2000000000?
r/SQL on Reddit: How to turn Money to Decimal? e.g. $1M to 1000000 and $2B to 2000000000?
October 14, 2023 -

Hello, I'm trying to convert two of my money columns into decimals but I'm failing miserably.

SELECT valuation,
SUBSTR(valuation, 2) AS numeric_part, SAFE_CAST(SUBSTR(valuation, 2) AS FLOAT64) AS float_value, CASE WHEN STRPOS(valuation, 'B') > 0 THEN 1e9 WHEN STRPOS(valuation, 'M') > 0 THEN 1e6 ELSE 1 END AS multiplier FROM `unicorns-405719.unicorn.unival`;

I also used CAST and CASE but all they do is remove the dollar sign without actually multiplying the M by 6 zeroes or the B by 9.
I'm using BigQuery and I keep getting errors and Idk what to do. I'm about to give up and use Excel instead.

🌐
C# Corner
c-sharpcorner.com › article › t-sql-display-decimal-numbers-as-money
T-SQL - Display Decimal Numbers As Money
July 17, 2019 - To display decimal numbers as money with cents, you can simply cast the number to money as the following. SELECT convert(varchar,cast(541777367.100000 as money), 1) as 'Budget'
Top answer
1 of 2
26

This is something that should be done on the presentation layer, but if you need to do this in sql you can use:

'$'+convert(varchar(50), CAST(amount as money), -1) amount

Here is an example:

;with cte (amount)
as
(
    select 123254578.00 union all
    select 99966.00 union all
    select 0.00 union all
    select 6275.00 union all 
    select 18964.00 union all 
    select 1383.36 union all
    select 26622.36
)
select '$'+convert(varchar(50), CAST(amount as money), -1) amount
from cte

See SQL Fiddle with Demo. This returns:

|          AMOUNT |
-------------------
| 99,966.00 |
|           6,275.00 |
|      1,383.36 |
|      $26,622.36 |

Note: This will be much easier in SQL Server 2012 because you can use FORMAT()

;with cte (amount)
as
(
    select 123254578.00 union all
    select 99966.00 union all
    select 0.00 union all
    select 6275.00 union all 
    select 18964.00 union all 
    select 1383.36 union all
    select 26622.36
)
select '$'+FORMAT(amount,'#,0.0000') amount
from cte

See SQL Fiddle with Demo

2 of 2
11

Adding to bluefeet's answer, the FORMAT function available in SQL 2012 could be done like this:

SELECT FORMAT(12345.6789, 'C', 'en-us')

The C means currency, and the last argument is culture. The culture is important if you want your application to be multilingual, because it takes care of things like dollar (or euro) signs, and the thousands separator. For instance:

SELECT 
FORMAT(12345.6789, 'C', 'en-us') as "USA", 
FORMAT(12345.6789, 'C', 'fr-ca') as "French Canada", 
FORMAT(12345.6789, 'C', 'fr-fr') as "French France",
FORMAT(12345.6789, 'C', 'hi-in') as "Hindi India"

Will give this result:

USA            French Canada        French France     Hindi India
-----------    -------------        --------------    --------------
          12 345,68 €       ₹ 12,345.68
Find elsewhere
🌐
MSSQLTips
mssqltips.com › home › sql format currency code examples
SQL Format Currency Code Examples
December 30, 2024 - In this article, we saw different examples of functions used to change the output for different currency formats in an MS SQL database. Note: The FORMAT function uses Common Language Runtime (CLR) and there have been noticeable performance differences between other approaches (CONVERT Function, CAST Function, etc.) showing that FORMAT is much slower.
🌐
Microsoft Learn
learn.microsoft.com › en-us › sql › t-sql › functions › cast-and-convert-transact-sql
CAST and CONVERT (Transact-SQL) - SQL Server | Microsoft Learn
For example, this conversion returns $10.3497: SELECT CAST(10.3496847 AS money); SQL Server returns an error message when converting nonnumeric char, nchar, nvarchar, or varchar data to decimal, float, int, numeric.
🌐
TechBrij
techbrij.com › sql-convert-money-data-type-decimal-dynamically
SQL Query To Check Money Data Type and Convert it to Decimal Dynamically - TechBrij
Sometimes we need to convert one data type to another data type to map columns in sql server. You might not be allowed to change table structure directly. In this case you've to convert in your query or stored procedure. Suppose you've to convert money data-type to decimal for greater precision in calculation then you can do it easily using Cast or Convert methods.
🌐
SQL Studies
sqlstudies.com › 2014 › 06 › 02 › what-is-the-difference-between-money-and-decimal194
What is the difference between Money and Decimal(19,4) | SQL Studies
June 2, 2014 - Category: Microsoft SQL Server, SQLServerPedia Syndication, T-SQL | Tags: code language, language sql, microsoft sql server, sql statements, T-SQL ... Other than doing an implicit conversion you will end up with a similar result to DECIMAL * DECIMAL. The fixed precision will only happen with MONEY * MONEY. ... Money can also handle the dollar sign and commas, whereas decimal cannot. I know, weird, right? SELECT CONVERT(MONEY,’$1,000′) –works SELECT CONVERT(DECIMAL,’1,000′) –doesn’t work SELECT CONVERT(DECIMAL,’$1000′) –doesn’t work
🌐
SQLServerCentral
sqlservercentral.com › forums › topic › conversion-of-currency-stored-as-varchar-to-decimal
Conversion of currency stored as varchar to decimal – SQLServerCentral Forums
September 20, 2022 - SQL DBA,SQL Server MVP(07, 08, 09) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies". ... NO! the old Sybase MONEY datatypes have ugly rounding problems; google it!
🌐
Born SQL
bornsql.ca › home › how should i store currency values in sql server?
How should I store currency values in SQL Server? - Born SQL
September 16, 2022 - When I design tables on SQL Server that are going to store a currency value, I generally use DECIMAL(19,4). If I encounter a customer database that stores these values using the MONEY data type, I have no problem whatsoever with that, because they are basically the same thing anyway.
🌐
DotFactory
dofactory.com › sql › money
SQL MONEY Data Type
SQL Date · The MONEY data type holds monetary or currency values. MONEY accepts values from -922,337,203,685,477.5808 to 922,337,203,685,477.5807. A period is used to separate partial from whole monetary units like cents. A table with a MONEY column.
🌐
SQLServerCentral
sqlservercentral.com › forums › topic › converting-money
Converting MONEY – SQLServerCentral Forums
December 23, 2020 - In SQL Server, it's actually DECIMAL(P,S) where "S" (scale) is the number of decimal places and "P" (precision) is the total number of characters not including the decimal point. It does sound backwards but that's the way it's documented in MS documentation and does seem to follow mathematical jargon in that area. The DECIMAL datatype has a similar problem as the MONEY datatype in that the SCALE can automatically be reduced by the system if certain conditions are met which can easily throw things like mortgage payment and interest calculation right out the window.
🌐
SQL Team
sqlteam.com › forums › topic.asp
problem with Converting Money to String - SQL Server Forums
Microsoft SQL Server articles, forums and blogs for database administrators (DBA) and developers.
🌐
Bertwagner
bertwagner.com › data with bert › posts › try parse convert strings to numbers › index
Shortchanged with International Money in SQL Server
September 25, 2018 - SELECT EmployeeId, TRY_CONVERT(money,Salary) AS Salary, Country FROM ##InternationalMegaCorpSalaries · 50% correct...! Our employees in Turkey are being seriously underpaid with conversion though. I'm kind of glad to not have to rely on this solution though since the money datatype has its own fair share of problems as well. SQL ...
🌐
Microsoft Geeks
spgeeks.devoworx.com › home › convert decimal to money sql
Convert Decimal To Money SQL - SPGeeks | Microsoft Geeks
November 16, 2020 - SELECT replace( convert(varchar, cast(floor(71567536.100000) as money),1), '.00', '') + N' ر.س ' as 'Budget'