如何将百分数转换为小数存入SQL数据库 [[size=18px]size=10px] 请大家帮下忙,用什么方法,可以将类似于30%这样的数据存到数据库中为0.3,导入时如何处理呢?我一开始直接使用decimal(6,4),还有类似的numrical,float都试过了,出现类型转换错误,请大家看看怎么写。[/size][/size] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 30%,假设为一个串val。case(replace(val,'%','') decimal(18,2))/100 create table tb(val varchar(20))insert into tb values('30%')insert into tb values('100%')insert into tb values('30.2%')goselect cast(replace(val,'%','') as decimal(18,2))/100from tbdrop table tb/* ------------------------ .3000001.000000.302000(所影响的行数为 3 行)*/ 问题是你的数据格式是怎么设置的?表字段是什么类型的?把数据先导入到大乌龟这个临时表中再insert 你的表select cast(replace(val,'%','') as decimal(18,2))/100from tb %只是数值的format格式,和数据本身无关。 CREATE TABLE [dbo].[revealtable]( [date] [datetime] NOT NULL, [r_stock_code] [int] NOT NULL, [r_broker_code] [nchar](10) NOT NULL, [share_holding] [varchar](50) , [per] [varchar](50),) 这是我的表,需要导入的数据类似于下面的类型:2009/12/30 00002 B01284 30,598,415 1.27%2009/12/30 00002 C00065 27,086,192 1.12% 用临时表再插入,效率低了点,因为处理的数据特别多,所以我想用bulk insert,能不能替换完使用bulk insert,具体该怎么做,谢谢,求教!!! 表结构改下,刚才搞错了:CREATE TABLE [dbo].[revealtable]([date] [datetime] NOT NULL,[r_stock_code] [int] NOT NULL,[r_broker_code] [nchar](10) NOT NULL,[share_holding] [varchar](50) ,[per] [decimal(6,4)](50),) 这是我的表,需要导入的数据类似于下面的类型:2009/12/30 00002 B01284 30,598,415 1.27%2009/12/30 00002 C00065 27,086,192 1.12% 可以考虑使用CLR,写一个支持正则替换的函数。 SQL sever 2008 R2 中windows登录后出现的问题 CONVERT函数做日期转换的问题.(高分)急~~~~ 求一条SQL语句(急~!) 新手的SQL 2000 Server 问题 一个结构问题 当某个字段超过某个值时候就自动预警怎么做? 急求:SQL Server2005 数据库附件问题 nvarchar(4000)长度不够? 根据文章的ArticleID,怎样取出这篇文章的最近10篇相关文章 用sql语句如何生成一个与源表(a.dbf)结构一致的表?急~ 帮忙改下SQL语句 如何高效地写这样的Sql语句呢
insert into tb values('30%')
insert into tb values('100%')
insert into tb values('30.2%')
goselect cast(replace(val,'%','') as decimal(18,2))/100
from tbdrop table tb/*
------------------------
.300000
1.000000
.302000(所影响的行数为 3 行)
*/
把数据先导入到大乌龟这个临时表中
再insert 你的表
select cast(replace(val,'%','') as decimal(18,2))/100
from tb
%只是数值的format格式,和数据本身无关。
[date] [datetime] NOT NULL,
[r_stock_code] [int] NOT NULL,
[r_broker_code] [nchar](10) NOT NULL,
[share_holding] [varchar](50) ,
[per] [varchar](50),
)
这是我的表,需要导入的数据类似于下面的类型:
2009/12/30 00002 B01284 30,598,415 1.27%
2009/12/30 00002 C00065 27,086,192 1.12%
CREATE TABLE [dbo].[revealtable](
[date] [datetime] NOT NULL,
[r_stock_code] [int] NOT NULL,
[r_broker_code] [nchar](10) NOT NULL,
[share_holding] [varchar](50) ,
[per] [decimal(6,4)](50),
)
这是我的表,需要导入的数据类似于下面的类型:
2009/12/30 00002 B01284 30,598,415 1.27%
2009/12/30 00002 C00065 27,086,192 1.12%