我正在尝试将以下查询运行到Apache Derby Embedded DB
从arcproject中选择ProjectName,CompaignNumber,JobNumber 其中Projectname喜欢'%'或CompaignNumber喜欢'%'或JobNumber喜欢'%'
但它会产生以下错误
ERROR: No authorized routine named 'LIKE' of type 'FUNCTION'
having compatible arguments was found.
Error Code: 30000
我无法理解这是什么问题。
答案 0 :(得分:0)
我怀疑你在你的问题中没有包含你的程序的完全语法,因为当我将你的查询剪切并粘贴到Derby中时它运行良好:
ij> create table arcproject (ProjectName varchar(10),CompaignNumber varchar(10),JobNumber varchar(10));
0 rows inserted/updated/deleted
ij> insert into arcproject values ('a','b','c');
1 row inserted/updated/deleted
ij> select ProjectName , CompaignNumber ,JobNumber from arcproject where Projectname like '%' OR CompaignNumber like '%' OR JobNumber like '%';
PROJECTNA&|COMPAIGNN&|JOBNUMBER
--------------------------------
a |b |c
请记住,在提出问题时,您必须包含所有详细信息,包括您使用的完全语法,尤其是当您询问语法错误时
答案 1 :(得分:0)
首先感谢您的回复。现在我发送每个细节(下面的查询是工作查询)。
首先,我使用查询
创建了表格创建表“APP”。“ARCPROJECT”( PROJECTNAME VARCHAR PRIMARY KEY not null, COMPAIGNNUMBER VARCHAR默认为'NULL', JOBNUMBER INTEGER默认为'NULL', RESPONSIBLEPERSON VARCHAR不为null, PROJECTSTARTDATE DATE默认为'NULL', PROJECTENDDATE DATE默认为'NULL')
然后我插入了值
插入“APP”。“ARCPROJECT”(PROJECTNAME,COMPAIGNNUMBER,JOBNUMBER,RESPONSIBLEPERSON,PROJECTSTARTDATE,PROJECTENDDATE)值('proje-1','cmp-123',89,'person-xyz','2012- 12-8','2013-12-8');
然后,当我尝试这个查询时,它给了我上面提到的同样的错误。
选择ProjectName,CompaignNumber,JobNumber,Responsibleperson,ProjectStartDate,projectEndDate 来自arcproject 其中Projectname如'%'或CompaignNumber如'%'或JobNumber如'%'或责任人如'%';
注意:当我只使用两个OR表达式时(例如“其中Projectname喜欢'%'或CompaignNumber喜欢'%'”)然后它工作正常但是当我添加另一个时它开始显示之前提到的错误消息。
答案 2 :(得分:0)
感谢您的更新;现在更清楚了。
您使用的是什么版本的Derby?我无法按原样运行您的CREATE TABLE语句;我不得不做两个改变: 1)我不得不将“VARCHAR”改为“VARCHAR(10)” 2)我不得不将“INTEGER default'NULL'”更改为“INTEGER default 0”
在我完成这两项更改之后,我收到了您所描述的消息。
问题在于JOBNUMBER列,您已将其声明为INTEGER。
您不能在“INTEGER”列上使用“LIKE”;它只适用于字符串
如果将SELECT语句从“JobNumber like'%'”更改为“JobNumber!= 0”,则该语句可以正常工作。
我同意这个消息不是很清楚;我将在Derby项目中打开一个问题来尝试改进这个消息,因为我认为这对你来说可能更加清晰。
您可以在此处关注该问题的结果:https://issues.apache.org/jira/browse/DERBY-6020