查找句子的最后一个词SQL

时间:2018-12-09 19:01:43

标签: sql string oracle

我正试图从表'dep'和'emp'中返回一个表,该表包含所有确实具有以'A'开头的名字和以'R'开头的姓氏的雇员。我试图使用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 :(得分:1)

没有必要做第一个子字符串,因为无论是否在空格后切掉位,字符串'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

您需要通过在描述如何连接表时添加一个子句来结束查询

答案 1 :(得分:0)

我期望这样的情况:

where nom like 'A% R%'

假设nom同时具有名字和姓氏。

相关问题