2013-10-04 16 views
0

我试图运行的ProjectWise的SQL Server数据库实例的ADODB查询,使用下列字符串定义的查询:')'附近的语法不正确,子字符串()或charindex()可能不正确的使用?

select 
dms_audt.o_acttime as actionTime, 
dms_stat.o_statename as state, 
dms_doc.o_filename as filename, 
dms_doc.o_projectno as project 
from dms_audt 
inner join 
dms_stat 
on dms_audt.o_numparam2=dms_stat.o_stateno 
inner join dms_doc on dms_audt.objguid=dms_doc.o_docguid 
where substring(dms_doc.o_filename,1,4)="abcd") 
and charindex(dms_doc.o_filename,"efgh")=0 

VBA是给我的一个运行时错误:

​​

这让我认为我错误地使用了substring()charindex()。无论是否使用单引号或双引号包装abcdefgh字符串,我都收到此错误。任何想法我在这里做错了吗?

回答

5

你有一个额外的支架。

这个>where substring(dms_doc.o_filename,1,4)="abcd") and charindex(dms_doc.o_filename,"efgh")=0

需要是:

where substring(dms_doc.o_filename,1,4)='abcd' and charindex(dms_doc.o_filename,'efgh')=0

+1

应该是单引号。双引号会错误地期待一个名为'[abcd]'的列。 –

+0

@AaronBertrand好的,谢谢Aaron。错过了。 – codingbadger

+0

太好了,谢谢!我的工作站上没有安装SQL Server;有没有一个好的在线调试器可以用来追踪这种语法问题?我尝试了SQLFiddle,它只是给了我同样的错误。 – sigil