SQL中的数据转换函数问题

hd378 2006-10-28 03:00:59
ACCESS2000的数据库,有一个名为user的表,其中有一个名为text的字段,这个字段存放的都是数字,但是由于其他方法面的考虑,这个字段是字符串型的,比如text='500'这样的数据。现在为了搜索数据,比如要搜索所有text字段的值大于500的纪录,由于text字段是字符串型的,需要用到数据类型转换函数,那么对应的SQL语句可以这样写 select * from user where cdbl(text)>500 这样就可以查找text字段的值大于500的纪录。这个SQL语句在微软的ACCESS2000环境中运行通过,但是问题就来了,把这个sql语句用在ASP中就无法得出正确的结果,似乎不支持cdbl这个函数。以为是版本的问题,于是改为 select * from user where CONVERT(float,text)>500 还是不能解决。我用的asp脚本解释引擎版本是VBScript/5.6.8827,请问我该如何才能在asp中实现这个功能啊?
...全文
163 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hd378 2006-10-29
  • 打赏
  • 举报
回复
"access2000中不知道,sql server下面可以 case [text] when null then 0 else [text] end
判断一下。"
那么是不是可以写成 select * from user where case [text] when null then 0 else [text] end cdbl([text])>500 好像还是不对啊
hd378 2006-10-29
  • 打赏
  • 举报
回复
是不是可以写成 select * from user where text is not null and cdbl(text)>500 但还是会出现null字段无效的错误
SQL里有没有类似 select * from user where (if text<>null then cdbl(text)>500) 这样的写法或者类似的语句啊??
dy_outline 2006-10-28
  • 打赏
  • 举报
回复
SQL 语句中的函数必须是数据库支持的函数,否则会出错的。
应该用CAST或Convert函数。

CAST ( expression AS data_type )

使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])
xuStanly 2006-10-28
  • 打赏
  • 举报
回复
access2000中不知道,sql server下面可以 case [text] when null then 0 else [text] end
判断一下。
hd378 2006-10-28
  • 打赏
  • 举报
回复
啊对对对,确实是有text=null的字段,所以cdbl会出错,在使用cdbl之前应该判断一下
请问在SQL中该如何判断啊?
wggipkhgef 2006-10-28
  • 打赏
  • 举报
回复
还有可能是关键字的问题,把SQL语句如下改一下
select * from [user] where cdbl([user].[text])>500
xuStanly 2006-10-28
  • 打赏
  • 举报
回复
呵呵,肯定是有text=null的字段,所以cdbl会出错,在使用cdbl之前先判断一下吧。
wggipkhgef 2006-10-28
  • 打赏
  • 举报
回复
应当不是SQL语句错误,ASP支持cdbl(),多检查一下ASP程序段
hd378 2006-10-28
  • 打赏
  • 举报
回复
没有错误消息,只是搜索到的纪录集为空,什么也搜索不到
stou 2006-10-28
  • 打赏
  • 举报
回复
沒見錯
Unending 2006-10-28
  • 打赏
  • 举报
回复
应该不是VBScript的问题
给出错误信息来看看

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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