检索的一个字段时文本类型,里面的内容包括:1000,还有一些具体的数字20,30,
50,如何在检索条件时,将文本类型装换成数字类型比较,检索出20和30呢?
可以参考以下例子,table1.a为字符串,table2.b为数值
select a from Table1 where val(a) in (select b from Table2)
or
select a from Table1 where a in (select str(b) from Table2)
or
select a from Table1 where a in (select cstr(b) from Table2)
or
select a from Table1 where a in (select format(b,'#####') from Table2)
你先检索数据库出来,然后C#写个函数正则提取你要的内容不行?
直接sql转换access不行吧
你sql取出来数据后,自己再进行类型转换
可以先读出来,然后用字符串接收,接收完后,再用你使用的编程语言来转,比如toInt()之类的函数
用数据库自带的字符转换函数,或者读取数据到后台用Convert.Toint32函数转换,具体要看你这个字段的存储逻辑实现怎样提取到你要的数据,如果使用逗号分隔的可以用split函数返回一个string[]字符数组处理,问题描述的不是很清晰
使用MS Access的VAL函数,SELECT VAL(文本类型字段) FROM 表
VAL函数将能转成数字的字段值转成数字,否者为0
或者通过IIF函数,你可以自定义非数字字段值装成什么,IIF(IsNumeric(文本类型字段), Clng(文本类型字段), 0)
谢谢大家的指点,以下是access中的字段和内容,
检验结果
16
20.5
30
40
300
使用 select * form 表 where val(检验结果) >= '" + num1 + "' and val(检验结果) <= '" + num2 + " '查询语句,num1是30,num2是40
结果却是以下:
检验结果
300
40
30
怎么会出现300呢?
你用val把检验结果字段从文本类型转换成数字类型,然后你还用引号把比较的数字,如 '" + num1 + "' ,把数字类型转成文本类型来比较,有你这样折腾的吗?
把单引号去掉就是你需要的结果了。