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?」と一致することに注意してください。ストリング。

ワイルドカードが必要な場合は、'khsn%' のように WHERE app.employees.id にする必要があります。

「khsn」で始まるものに一致します

編集

OPのコメントに基づいてSUBSTRを追加

于 2009-03-25T16:06:04.857 に答える