这个SQL在Access里报错是什么原因?

Lisen_1987 2010-05-24 10:34:13

select max(convert(int,right(gridId,(len(gridId)-charindex('-',gridId)))))
from t_grids where gridId like 'A-%'


这样的一条SQL ,我在SQL-Server里执行没有问题,能出来数据,但是通过程序去访问Access,程序就抛异常,提示
用于函数参数的个数不对 在查询表达式 'isnull(max(convert(int,right(gridId,(len(gridId)-charindex('-',gridId))))),0)' 中

请问这是怎么回事?正确应该是怎么写的?
...全文
82 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lisen_1987 2010-05-26
  • 打赏
  • 举报
回复
空值的话我是想取0,6楼的如果查出来是空值是1吧
chuifengde 2010-05-26
  • 打赏
  • 举报
回复
6楼不行吗?
Lisen_1987 2010-05-26
  • 打赏
  • 举报
回复
Access我在网上查了有nz这个函数的呀,为什么还会报错呢
Lisen_1987 2010-05-25
  • 打赏
  • 举报
回复

SELECT nz(Max(Val(Right(gridId,(Len(gridId)-InStr(gridId,'-'))))),0) AS 表达式1
FROM t_grids
WHERE (((t_grids.gridId) Like 'A-%'));

我把SQL改成上述代码,在Access中执行没有报错,但是在C#项目中执行就抛出这个异常,
表达式中 'nz' 函数未定义。

请问是怎么回事?
weiki516 2010-05-25
  • 打赏
  • 举报
回复
ACCESS与MSSQL用的不同一套SQL语言 ACCESS是jet-sql MSSQL是T-sql 2者基本语法相同 但还是有差异的比如你使用的这几个函数charindex convert在ACCESS即JET-SQL中是没有的 详细参见JET-SQL官方手册
chuifengde 2010-05-25
  • 打赏
  • 举报
回复
可以改成这样:
SELECT max(mid(GridId,Instr(GridId,'-')+1)*1)
FROM t_Grids WHERE GridId LIKE 'A-*'
playwarcraft 2010-05-25
  • 打赏
  • 举报
回复
比如charindex在access里是用 instr 來玩的
htl258_Tony 2010-05-25
  • 打赏
  • 举报
回复
去百度找一下对应函数及用法,把语句修改了。
chuifengde 2010-05-25
  • 打赏
  • 举报
回复
access中是没有convert和charindex的分别对应的函数是format和instr
playwarcraft 2010-05-25
  • 打赏
  • 举报
回复
语句不支持在access里跑呗
Lisen_1987 2010-05-25
  • 打赏
  • 举报
回复
没有高手知道吗,急啊~~~

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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