背景介绍:
我处理的是txt文件,txt文件的样式:
一直没法导入,后来一位大牛告诉我说是因为我的txt文件是用asc文件转过来的,本来asc文件是有换行符的,但是window不承认,所以他就说用16进制代替换行符就行了-----------导入果真成功了。
问题描述:
我需要统计的是第三列中所有正数(>0)的和, 我的主要数据是这个样子的:
我的代码如下:
代码上半部分就是导入txt文件。下半部分就是统计工作。
但是得到的结果是:
所以这是为什么?怎么办?请教诸位!
------解决思路----------------------
错误信息提示很明显,数据类型转化失败,由于你的字段没给出,我猜测你在tex文档中的数据所在字段值应该是文本,包含了字母e,+等符号,是不能直接转换为numeric数据类型的
------解决思路----------------------
;WITH t1 AS (
SELECT Reverse(...) as sz -- 先不要转换
FROM #y2801
)
,t2 AS (
SELECT CASE WHEN ISNUMERIC(sz)=1 THEN
cast(sz AS decimal(12,8))
ELSE
NULL -- 反正最后不统计,用 NULL 好了
END AS sz
FROM t1
)
SELECT ... -- 统计
FROM t2
WHERE sz > 0.0
------解决思路----------------------
你不是将txt文档导入到数据库里面了么?
导入到什么数据库是哪个你知道么?
use 数据库名
go
select * from 导入的数据的表名 --会显示你导入数据的结果集啊,如果没有,你是否具有修改该表的权限呢,改改该表
--可以先替换掉里面的e+
update #y280 set 列名3=replace(列名3,'e+','0') --我说的列名3只是个假设,具体要看你处理的字段名,如果确实没有字段名这种情况,用列名3肯定是不行的,那建议你可以考虑用导入向导导入数据,可以新建好表再导入txt文档中的数据,方便后面处理
----如果你只要显示不小于0的数据
--然后通过where语句删选即可啊
select * from #y280 where 列名3>0