C#检索access数据库时如何将文本字段转换成数字

检索的一个字段时文本类型,里面的内容包括:1000,还有一些具体的数字20,30,
50,如何在检索条件时,将文本类型装换成数字类型比较,检索出20和30呢?

8个回答

可以参考以下例子,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)

Insanity_zhang
XuzhongZhang 谢谢,使用val函数时,有的可以检索正确有的就不可以。
大约 5 年之前 回复

你先检索数据库出来,然后C#写个函数正则提取你要的内容不行?

直接sql转换access不行吧

你sql取出来数据后,自己再进行类型转换

Insanity_zhang
XuzhongZhang 谢谢
大约 5 年之前 回复

可以先读出来,然后用字符串接收,接收完后,再用你使用的编程语言来转,比如toInt()之类的函数

Insanity_zhang
XuzhongZhang 谢谢
大约 5 年之前 回复

用数据库自带的字符转换函数,或者读取数据到后台用Convert.Toint32函数转换,具体要看你这个字段的存储逻辑实现怎样提取到你要的数据,如果使用逗号分隔的可以用split函数返回一个string[]字符数组处理,问题描述的不是很清晰

使用MS Access的VAL函数,SELECT VAL(文本类型字段) FROM 表
VAL函数将能转成数字的字段值转成数字,否者为0
或者通过IIF函数,你可以自定义非数字字段值装成什么,IIF(IsNumeric(文本类型字段), Clng(文本类型字段), 0)

Insanity_zhang
XuzhongZhang 谢谢,val()部分可以检索正确,部分不行,Clng()函数在C#中会报错的
大约 5 年之前 回复

谢谢大家的指点,以下是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 + "' ,把数字类型转成文本类型来比较,有你这样折腾的吗?
把单引号去掉就是你需要的结果了。

save4me
save4me 不客气,很高兴回答对你有帮助
大约 5 年之前 回复
Insanity_zhang
XuzhongZhang 非常感谢!
大约 5 年之前 回复
Insanity_zhang
XuzhongZhang 非常感谢!
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问