我有一个栏是字符串类型,里面可能是数字,也可能是非数字。。
select * from [Table] where cint(FieldName)>cint('1234')
我想找出大过某些数的资料。如果数据库里全是数字,当然很正常,要是有一两条是非数字的话,自然就出错了。
请问各位有无好的解决办法? 可以先 isnumeric 再 cint?非常感谢
select * from [Table] where cint(FieldName)>cint('1234')
我想找出大过某些数的资料。如果数据库里全是数字,当然很正常,要是有一两条是非数字的话,自然就出错了。
请问各位有无好的解决办法? 可以先 isnumeric 再 cint?非常感谢
select * into new_table from old_table难道我也先把数字的选出来,放在新表,再选?
set @i = '......'select * from [Table] where ISNUMERIC(FieldName) = 1 and cast(fieldname as int) > cast(@i as int)
set @i = '......'select * from [Table] where (ISNUMERIC(FieldName) = 1 and cast(fieldname as int) > cast(@i as int)) or (ISNUMERIC(FieldName) = 0 and FieldName > @i )select * from [Table] where (ISNUMERIC(FieldName) = 1 and cast(fieldname as int) > cast(@i as int)) or (ISNUMERIC(FieldName) = 0 and cast(FieldName as varchar) > @i )
Q2 请问 ISNUMERIC(FieldName) = 1 这句的效用是?多谢
参数是 fieldName, 能选出 这个Field 里面 是 数字类型的 数据?
我查询出错。
我还是有题目中的那个疑问: 就是 ISNUMERIC(FieldName) = 1 and cast(fieldname as int) 这一句是并列进行的, 他不会先过滤了ISNUMERIC 再 做Cast
因此,如果有 非数字类型,就会出错。
也可以写
select * from (select * from [table] where isnumberic(fieldname)=1) m where cast(m.fieldname as int)>@i
不管怎么样,多谢你的帮助先。