0

我正在尝试对 Apache Derby Embedded DB 运行以下查询

从 arcproject 中选择 ProjectName 、 CompaignNumber 、JobNumber
其中 Projectname like '%' OR CompaignNumber like '%' OR JobNumber like '%'

但它会产生以下错误

ERROR: No authorized routine named 'LIKE' of type 'FUNCTION'
having compatible arguments was found.
Error Code: 30000

我无法理解问题所在。

4

3 回答 3

0

谢谢你的更新; 现在更清楚了。

您使用的是哪个版本的 Derby?我无法按原样运行您的 CREATE TABLE 语句;我必须进行两项更改:1)我必须将“VARCHAR”更改为“VARCHAR(10)”2)我必须将“INTEGER default 'NULL'”更改为“INTEGER default 0”

在我做了这两个更改之后,我收到了您描述的消息。

问题在于您已声明为 INTEGER 的 JOBNUMBER 列。

您不能在“INTEGER”列上使用“LIKE”;它只适用于字符串

如果您将 SELECT 语句从“JobNumber like '%'”更改为“JobNumber != 0”,则该语句可以正常工作。

我同意信息不是很清楚;我将在 Derby 项目中打开一个问题以尝试改进信息,因为我认为它对你来说可能更清楚。

您可以在此处关注该问题的结果:https ://issues.apache.org/jira/browse/DERBY-6020

于 2012-12-19T21:16:12.710 回答
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

请记住,在提出问题时,包括所有细节至关重要,包括您使用的确切语法,特别是当您询问语法错误时。

于 2012-12-18T16:06:44.743 回答
0

首先感谢您的回复。现在我正在发送每一个细节(下面给出的查询是有效的查询)。

首先,我使用查询创建了表

CREATE TABLE "APP"."ARCPROJECT"(PROJECTNAME VARCHAR PRIMARY KEY 不为空,COMPAIGNNUMBER VARCHAR 默认为 'NULL',JOBNUMBER INTEGER 默认为'NULL',RESPONSIBLEPERSON VARCHAR 不为空,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');

然后当我尝试这个查询时,它给了我上面提到的同样的错误。

从 arcproject 中选择 ProjectName、CompaignNumber、JobNumber、Responsibleperson、ProjectStartDate、projectEndDate,其中 Projectname like '%' OR CompaignNumber like '%' OR JobNumber like '%' OR Responsibleperson like '%';

注意:当我只使用两个 OR 表达式(例如,“其中 Projectname like '%' OR CompaignNumber like '%'”)时,它可以正常工作,但是当我添加另一个时,它开始显示前面提到的错误消息。

于 2012-12-18T16:32:49.330 回答