将数据类型 varchar 转换为 float 时出错

ming_Y 2010-03-30 10:44:42
各位大虾,将表里的某字段数据转换为float时错误(有非法字符),由于数据行很多,有没好的方法解决此问题.需用此字段进行计算!

先谢谢各位!
...全文
644 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack15850798154 2010-03-30
  • 打赏
  • 举报
回复
学习学习!!!!!!!!!!!!!!
SQL77 2010-03-30
  • 打赏
  • 举报
回复
select a.column1,a.column2,cast(a.column3 as float) 
from (select column1, column2, column3
from tb
where isnumeric(column3)=1

) a
where column2=5


楼主这样吧,这样应该可以了,
ming_Y 2010-03-30
  • 打赏
  • 举报
回复
数据多啊,郁闷!
SQL77 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ming_y 的回复:]
引用 16 楼 sql77 的回复:
SQL code
select a.column1,a.column2,a.column3
from (select column1,column2,column3 from tb where isnumeric(column3)=1 and
column2=5) a WHERE ISNUMERIC(a.column3 )=0


你这样查还有数……
[/Quote]
那楼主检查一下你的数据吧
ming_Y 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sql77 的回复:]
SQL code
select a.column1,a.column2,a.column3
from (select column1,column2,column3 from tb where isnumeric(column3)=1 and
column2=5) a WHERE ISNUMERIC(a.column3 )=0


你这样查还有数据吗
[/Quote]


没数据.
SQL77 2010-03-30
  • 打赏
  • 举报
回复
select a.column1,a.column2,a.column3  
from (select column1,column2,column3 from tb where isnumeric(column3)=1 and
column2=5) a WHERE ISNUMERIC(a.column3 )=0


你这样查还有数据吗
ming_Y 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sql77 的回复:]
引用 9 楼 ming_y 的回复:
引用 6 楼 sql77 的回复:
引用 4 楼 ming_y 的回复:
引用 1 楼 sql77 的回复:
ISNUMERIC()判断


这个方法不行,为'0'的行只有1个,将此纠正后还是出现上述问题.

这个可以,应该是楼主没弄好的原因,

SQL code
SELECT * FROM TB WHERE ISNUMERI(COL)……
[/Quote]

测试你写的SQL是没问题,但是我那查询还是错误!
SQL77 2010-03-30
  • 打赏
  • 举报
回复
DECLARE @TB TABLE(ID VARCHAR(10),IDD INT)
INSERT @TB SELECT 'A',1 UNION ALL SELECT 2,2 UNION ALL SELECT 2.0,3


select cast(a.ID as float)
from (select * from @tb where isnumeric(ID)=1 AND IDD=2
) a


(所影响的行数为 3 行)


-----------------------------------------------------
2.0

(所影响的行数为 1 行)


没错啊,我晕
老黎 2010-03-30
  • 打赏
  • 举报
回复

select a.column1,a.column2,cast(a.column3 as float)
from (select column1, column2, column3
from tb
where isnumeric(column3)=1
and column2=5
) a
where isnumeric(column3) = 1
SQL77 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ming_y 的回复:]
引用 6 楼 sql77 的回复:
引用 4 楼 ming_y 的回复:
引用 1 楼 sql77 的回复:
ISNUMERIC()判断


这个方法不行,为'0'的行只有1个,将此纠正后还是出现上述问题.

这个可以,应该是楼主没弄好的原因,

SQL code
SELECT * FROM TB WHERE ISNUMERI(COL)=1

然后子查询再查,如果后面加条……
[/Quote]
那不明白了,你看我上面的查询就知道
ming_Y 2010-03-30
  • 打赏
  • 举报
回复
贴SQL2000语句

select a.column1,a.column2,cast(a.column3 as float)
from (select column1,column2,column3 from tb where isnumeric(column3)=1 and
column2=5) a
feegle_develop 2010-03-30
  • 打赏
  • 举报
回复
是不是没有消除空字符?
ming_Y 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sql77 的回复:]
引用 4 楼 ming_y 的回复:
引用 1 楼 sql77 的回复:
ISNUMERIC()判断


这个方法不行,为'0'的行只有1个,将此纠正后还是出现上述问题.

这个可以,应该是楼主没弄好的原因,

SQL code
SELECT * FROM TB WHERE ISNUMERI(COL)=1

然后子查询再查,如果后面加条件应该也可以,不过不能加在前面
[/Quote]

按你教的方法做成子查询,一样的出错!
SQL77 2010-03-30
  • 打赏
  • 举报
回复
DECLARE @TB TABLE(ID VARCHAR(10))
INSERT @TB SELECT 'A' UNION ALL SELECT 2


SELECT * FROM @TB WHERE ISNUMERIC(ID)=1 AND ID=2


/*

(所影响的行数为 2 行)

ID
----------
2

(所影响的行数为 1 行)

*/
SELECT * FROM @TB WHERE ID=2 AND ISNUMERIC(ID)=1




/*

(所影响的行数为 2 行)


(所影响的行数为 1 行)

服务器: 消息 245,级别 16,状态 1,行 7
将 varchar 值 'A' 转换为数据类型为 int 的列时发生语法错误。
  • 打赏
  • 举报
回复
select isnumeric('342142treter314')

返回结果为0
SQL77 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ming_y 的回复:]
引用 1 楼 sql77 的回复:
ISNUMERIC()判断


这个方法不行,为'0'的行只有1个,将此纠正后还是出现上述问题.
[/Quote]
这个可以,应该是楼主没弄好的原因,
SELECT * FROM TB WHERE ISNUMERI(COL)=1 

然后子查询再查,如果后面加条件应该也可以,不过不能加在前面
ming_Y 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ldslove 的回复:]
贴个数据看看。。。
[/Quote]

呵,数据太多了.不好贴了
ming_Y 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sql77 的回复:]
ISNUMERIC()判断
[/Quote]

这个方法不行,为'0'的行只有1个,将此纠正后还是出现上述问题.
黄_瓜 2010-03-30
  • 打赏
  • 举报
回复
有非法字符肯定不能转了
东那个升 2010-03-30
  • 打赏
  • 举报
回复
贴个数据看看。。。
加载更多回复(4)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧