日期:2014-05-17  浏览次数:20603 次

如何将字符串转换成数值
有这样一列字符类型,如何转换成数值类型,每个值不用0来补齐小数位数?
112.3
54665.65879
456.02046
654.265
40354.10203
145
6546463

不希望转成用0补齐小数位数.

112.30000
54665.65879
456.02046
654.26500
40354.10203
145.00000
6546463.00000

------解决方案--------------------
decimal 去了解一下


SQL code

seelct cast (col as decimal(18,5)) from tb

------解决方案--------------------
ROUND函数可以指定需要四舍5入的小数位数!
------解决方案--------------------
推荐三个函数你可以去查查资料看看

SQL code


ROUND()

CEILING()

FLOOR()

------解决方案--------------------
转换为数值类型

使用

SQL code
numeric(18,5)

decimal(18,5)

------解决方案--------------------
探讨

我不希望转成用0补齐小数位数.楼上朋友提供的函数都会用0补齐小数位数呀.

------解决方案--------------------
其实下面的就可以,我想复杂了,O(∩_∩)O哈哈~
SQL code

--> 测试数据:[tb]
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
GO 
CREATE TABLE [tb]([col] NUMERIC(12,5))
INSERT [tb]
SELECT 112.3 UNION ALL
SELECT 54665.65879 UNION ALL
SELECT 456.02046 UNION ALL
SELECT 654.265 UNION ALL
SELECT 40354.10203 UNION ALL
SELECT 145 UNION ALL
SELECT 6546463
--------------开始查询--------------------------

SELECT * FROM [tb]
SELECT CAST(col AS FLOAT) FROM [tb]

----------------结果----------------------------
/* 
(无列名)
112.3
54665.65879
456.02046
654.265
40354.10203
145
6546463
*/

------解决方案--------------------
探讨

一两个值到不影响,写了一个查询,有很多记录行,有许多0值,有许多小数值,都保留几位小数的话,那单纯的0值看上去很累赘.

之前单独写了一个自定义函数,将小数点后无效的0值去掉了.但转成varchar类型了,又不便一统计.

------解决方案--------------------
SQL code

 CAST(列名 AS FLOAT)