USE DATABASE FILE
MODI STRU
save structure
REPL ALL (NEW 数值 FIELD) WITH VAL(字府型 FIELD)
BROWSE
check the data in the numeric field is ok, if ok, delete the character field
use this method, you can exchange the data type and prevent the data from losing
多看看你写的程序吧!
这种问题我不想回答来着,百度里弄不成精彩回复。
--------------
给你做一个实验。
假如excel 使用的是标准xml 驻存。
基本上类似于如下结构
<H30_Value>4011<H30_Value/>
<H30_Handle>Round(2)<H30_Handle/>
<H30_ViewValue>400<H30_ViewValu/>
也就是说,你获得的值不是视觉值就是,实际存储值。
你的程序并没有统一处理,一些API,getCellValue,和 Value 差距可是相当的大。
mysql 写的导入插件用的是实际存储值。
我建立一个表,三个列 A int B float C varchar
然后我用甲骨文开发的插件提交一下数据:
一共三行 三种格式。 自己多看看 fx 的那个显示 是什么值
也就是说 造成这种视觉和实际的元凶是handle,你用最简单的模板试一下,我个人认为你的那个程序有问题的概率比excel格式出问题的概率大一些。
mysql 文本 如果是数字 也可运算,这是一个优点。也是一个缺点。
思路大概是这样:
实用ltrim或者rtrim函数去掉左边或右边符合条件的字符。
如果是oracle环境,看你这里都是字母在前数字在后的格式,假设旧列叫 col_old,新的字母列是col_str,新的数字列是col_num
update table1 set
col_str=rtrim(col_old,'1234567890'),
col_num=to_number(ltrim(col_old,rtrim(col_old,'1234567890')))
sql server 有没有这个函数不知道了,反正这是一个思路吧。供参考而已
sql没有这个东西,那我就给你提个思路吧,语句你自己写了,我没有环境。
用ASCII码和sql的ltrim和rtrim来做,你需要循环找到从左起每个字符都是ASCII>=65(9以上即字母)的,直到找到ASCII<=64的就结束,这样可以把这个字符部分的长度得到,在用trim函数截取一下就可以了。
以上就是关于我用foxpro 建立了一个数据库,默认类型是字府型,是否可以更改为数值型,全部的内容,包括:我用foxpro 建立了一个数据库,默认类型是字府型,是否可以更改为数值型,、从EXCEL导入数据库数值型都被四舍五入了、在SQL数据库表中添加一列数值型(默认保留2位)的数字,该怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)