Найти последнее слово предложения SQL - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь вернуть таблицу, содержащую всех сотрудников, у которых есть имя, начинающееся с «A», и фамилия, начинающаяся с «R», из таблиц «dep» и «emp».Я пытался использовать функцию INDEXOF, но, похоже, она не работает.что я могу сделать?

select emp.nome,emp.sal,emp.ndep,dep.nome, 
from emp, dep 
where (substring(emp.nome,1,indexof(' ',emp.nome)))like 'A%' 
and (substring(emp.nome,lastindexof(' ',emp.nome),emp.nome.lenght)) like 'R%'
order by 1

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Нет смысла делать первую подстроку, так как строка 'ABC DEF' похожа на 'A%' независимо от того, вырезали ли вы бит после пробела.

Фамилия, использование lastindexof вызываетпробел, чтобы стать частью имени, потому что вы забыли добавить 1, чтобы пропустить следующий символ после пробела, и ' RST' никогда не будет похоже на 'R%'.Я поменял ваш lastindexof на instr, потому что не был уверен, что lastindexof универсально применим как instr.Вызов instr с отрицательным начальным индексом заставляет его искать в обратном направлении от конца строки

select emp.nome,emp.sal,emp.ndep,dep.nome, 
from 
  emp 
  INNER JOIN dep ON /*something_goes_here*/
where emp.nome like 'A%' and 
 SUBSTR(emp.nome, INSTR(emp.nome, ' ', -1) + 1,emp.nome.length)) like 'R%'
order by 1

. Вам необходимо завершить запрос, поместив предложение, описывающее, как таблицы должны объединяться

0 голосов
/ 09 декабря 2018

Я бы ожидал, что такое условие:

where nom like 'A% R%'

при условии, что nom имеет как имя, так и фамилию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...