Соответствие между значениями столбца, возвращенными из ограничения LIKE в SQL - PullRequest
0 голосов
/ 25 марта 2009

Я пытаюсь сопоставить возвращаемые значения столбцов, но значения возвращаются в результате сопоставления с образцом:

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-дерби сообщает:

ОШИБКА 42884: Не найдено авторизованной подпрограммы с именем 'LIKE' типа 'FUNCTION' с совместимыми аргументами.

Как я могу получить об этом?

Ответы [ 2 ]

0 голосов
/ 25 марта 2009

Как упомянул злой пингвин, вам нужно использовать соединение

  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?" строка.

Если вы хотите подстановочный знак, он должен быть ГДЕ app.employees.id как 'khsn%'

, что соответствует любому значению, начинающемуся с "khsn"

РЕДАКТИРОВАТЬ

Добавлено SUBSTR на основе комментариев ОП

0 голосов
/ 25 марта 2009

Вы должны использовать JOIN , я думаю. Я не уверен, что понимаю, к какому результату вы стремитесь, но то, что вы там написали, похоже на то, что я не видел SQL.

...