2012-07-18 53 views
1

善良的人替换功能,JdbcOdbc驱动程序无法找到在MS Access

我想通过我的Java程序执行对MS Access数据库的SQL查询。该程序使用JdbcOdbc驱动程序。该查询包含内置的替换功能。它看起来是这样的:

SELECT Replace(first_name, '-', ' ') AS f_name FROM patient WHERE.... 

程序失败,出现以下错误:“[微软] [ODBC Microsoft Access驱动程序]未定义函数表达式‘替换’。”

这怎么可能?其他功能,如LCase和Trim的工作很好。另外,当直接在后端执行时,替换功能可以正常工作。

回答

1

您的查询不能使用Replace()函数,除非它在Access会话中运行。

这种情况与您尝试使用用户定义函数的情况相同。数据库引擎只能在Access表达式服务的帮助下使用这些表达式服务,该服务仅在Access会话中可用。

+0

Thanks @HansUp。我对UDF并不感到惊讶。实际上,在我发现UDF不受支持后,我最终使用了Replace作为长解决方法的一部分。但是,如何在我的问题中提到的其他内置功能如何工作?在进一步的研究中,Jet Engine在外部访问时的默认配置似乎是在Sandbox模式下运行。在这种模式下,并不是所有的功能都支持,并且替换似乎是其中之一。我改变了注册表中的默认设置,但没有发现任何区别。我想知道为什么。请参阅下面评论中的文章链接。 – 2012-07-19 06:02:21

+0

http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B294698&Product=acc – 2012-07-19 06:02:36

+0

我没有提到沙箱,因为我不太了解细节,我不会建议任何人改变沙箱模式,我从来没有尝试过,所以不知道可能涉及哪些陷阱。总之,我无法帮助你。 – HansUp 2012-07-19 06:09:55

相关问题