0

我正在尝试匹配返回的列值,但值是作为模式匹配的结果返回的:

select app.employees.id, app.employees.name, app.employees.current_bp, 
app.designation.designation from app.employees, app.designation 
where app.employees.id like 'khsn?' = app.designation.desig_id like 'khsn?';

如您所见,我正在尝试检索一些列值,但 java derby 工具说:

错误 42884:未找到具有兼容参数的“FUNCTION”类型的名为“LIKE”的授权例程。

我该怎么办?

4

2 回答 2

0

我认为你应该使用JOIN。我不确定我是否理解您的目标是什么,但是您在那里编写的内容与我从未见过的 SQL 一样。

于 2009-03-25T15:59:59.537 回答
0

正如 evilpenguin 提到的,您需要使用连接

  select app.employees.id, app.employees.name, app.employees.current_bp, 
app.designation.designation from app.employees, app.designation where 
app.employees.id like 'khsn?' = app.designation.desig_id like 'khsn?';

可能是(如果我理解正确的话)

SELECT EMP.id, EMP.name, EMP.current_bp,
       DES.designation
FROM   app.employees AS EMP
INNER JOIN app.designation AS DES
       ON SUBSTR(EMP.id,0,4) = DES.desig_id
WHERE app.employees.id like 'khsn?'

请注意,这与文字“khsn?”匹配。细绳。

如果你想要一个通配符,它​​应该是 WHERE app.employees.id like 'khsn%'

这将匹配以“khsn”开头的任何内容

编辑

根据 OP 的评论添加了 SUBSTR

于 2009-03-25T16:06:04.857 回答