SELECT PARSENAME(CONVERT(VARCHAR(19), CONVERT(MONEY,randomBigInt), 1), 2)FROM #testEnvironment;
BEGIN TRANSET NOCOUNT ON;--== SOME SAMPLE DATA ==--IF object_id('tempdb..#testEnvironment') IS NOT NULLBEGIN DROP TABLE #testEnvironment;END;--1,000,000 Random rows of dataSELECT TOP 1000000 IDENTITY(INT,1,1) AS ID, ABS(CHECKSUM(NEWID())) AS randomBigIntINTO #testEnvironmentFROM master.dbo.syscolumns sc1, master.dbo.syscolumns sc2, master.dbo.syscolumns sc3;--Holder variable to take display time out of the equationDECLARE @HOLDER VARCHAR(19);PRINT REPLICATE('=',80);PRINT 'PARSENAME / CONVERT MONEY';PRINT REPLICATE('=',80);SET STATISTICS IO, TIME ON;SELECT @HOLDER = PARSENAME(CONVERT(VARCHAR(19), CONVERT(MONEY,randomBigInt), 1), 2)FROM #testEnvironment;SET STATISTICS IO, TIME OFF;ROLLBACK
================================================================================PARSENAME / CONVERT MONEY================================================================================Table '#testEnvironment'. Scan count 1, logical reads 2102, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 609 ms, elapsed time = 610 ms.
SELECT REPLACE(PARSENAME(CONVERT(VARCHAR(19), CONVERT(MONEY,randomBigInt), 1), 2) COLLATE Latin1_General_BIN2, ',', '.')FROM #testEnvironment;
BEGIN TRANSET NOCOUNT ON;--== SOME SAMPLE DATA ==--IF object_id('tempdb..#testEnvironment') IS NOT NULLBEGIN DROP TABLE #testEnvironment;END;--1,000,000 Random rows of dataSELECT TOP 1000000 IDENTITY(INT,1,1) AS ID, ABS(CHECKSUM(NEWID())) AS randomBigIntINTO #testEnvironmentFROM master.dbo.syscolumns sc1, master.dbo.syscolumns sc2, master.dbo.syscolumns sc3;--Holder variable to take display time out of the equationDECLARE @HOLDER VARCHAR(19);PRINT REPLICATE('=',80);PRINT 'REPLACE / PARSENAME / CONVERT MONEY';PRINT REPLICATE('=',80);SET STATISTICS IO, TIME ON;SELECT @HOLDER = REPLACE(PARSENAME(CONVERT(VARCHAR(19), CONVERT(MONEY,randomBigInt), 1), 2) COLLATE Latin1_General_BIN2, ',', '.')FROM #testEnvironment;SET STATISTICS IO, TIME OFF;ROLLBACK
================================================================================REPLACE / PARSENAME / CONVERT MONEY================================================================================Table '#testEnvironment'. Scan count 1, logical reads 2102, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 985 ms, elapsed time = 987 ms.
DECLARE @Number AS BIGINT; SET @Number = 65432121235SELECT ISNULL( CONVERT(VARCHAR,NULLIF(@Number/1000000000 % 1000,0))+'.','') + ISNULL( CONVERT(VARCHAR,NULLIF(@Number/1000000 % 1000,0))+'.','') + ISNULL( CONVERT(VARCHAR,NULLIF(@Number/1000 % 1000,0))+'.','') + CONVERT(VARCHAR,NULLIF(@Number%1000,0))
SET NOCOUNT ON;--== SOME SAMPLE DATA ==--IF object_id('tempdb..#testEnvironment') IS NOT NULLBEGIN DROP TABLE #testEnvironment;END;--1,000,000 Random rows of dataSELECT TOP 1000000 IDENTITY(INT,1,1) AS ID, ABS(CHECKSUM(NEWID())) AS randomBigIntINTO #testEnvironmentFROM master.dbo.syscolumns sc1, master.dbo.syscolumns sc2, master.dbo.syscolumns sc3;--Holder variable to take display time out of the equationDECLARE @HOLDER VARCHAR(19);PRINT REPLICATE('=',80);PRINT 'REPLACE / PARSENAME / CONVERT MONEY';PRINT REPLICATE('=',80);SET STATISTICS IO, TIME ON;SELECT @HOLDER = REPLACE(PARSENAME(CONVERT(VARCHAR(19), CONVERT(MONEY,randomBigInt), 1), 2) COLLATE Latin1_General_BIN2, ',', '.')FROM #testEnvironment;SET STATISTICS IO, TIME OFF;PRINT REPLICATE('=',80);PRINT 'Dwain.C';PRINT REPLICATE('=',80);SET STATISTICS IO, TIME ON;SELECT @HOLDER = CASE WHEN randomBigInt > 999999999 THEN RIGHT(randomBigInt/1000000000, 3) + '.' ELSE '' END + CASE WHEN randomBigInt > 999999 THEN RIGHT(randomBigInt/1000000, 3) + '.' ELSE '' END + CASE WHEN randomBigInt > 999 THEN RIGHT(randomBigInt/1000, 3) + '.' ELSE '' END + RIGHT(randomBigInt, 3)FROM #testEnvironment;SET STATISTICS IO, TIME OFF;PRINT REPLICATE('=',80);PRINT 'Adrian.Facio';PRINT REPLICATE('=',80);SET STATISTICS IO, TIME ON;SELECT @HOLDER = ISNULL( CONVERT(VARCHAR,NULLIF(randomBigInt/1000000000 % 1000,0))+'.','') + ISNULL( CONVERT(VARCHAR,NULLIF(randomBigInt/1000000 % 1000,0))+'.','') + ISNULL( CONVERT(VARCHAR,NULLIF(randomBigInt/1000 % 1000,0))+'.','') + CONVERT(VARCHAR,NULLIF(randomBigInt%1000,0))FROM #testEnvironment;SET STATISTICS IO, TIME OFF;DROP TABLE #testEnvironment
================================================================================REPLACE / PARSENAME / CONVERT MONEY================================================================================Table '#testEnvironment____________________________________________________________________________________________________0000000000A4'. Scan count 1, logical reads 2102, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 1404 ms, elapsed time = 1411 ms.================================================================================Dwain.C================================================================================Table '#testEnvironment____________________________________________________________________________________________________0000000000A4'. Scan count 1, logical reads 2102, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 1279 ms, elapsed time = 1310 ms.================================================================================Adrian.Facio================================================================================Table '#testEnvironment____________________________________________________________________________________________________0000000000A4'. Scan count 1, logical reads 2102, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 1794 ms, elapsed time = 1818 ms.