Oracle SQL中的子字符串

时间:2018-10-15 10:28:33

标签: sql oracle substring

我对Oracle SQL还是比较陌生,我想知道是否有人能够帮助我。

我正在尝试从History表的Employee列返回前50行。我试图返回首次使用“ on”后在history中位于“ desk”的实例。

谢谢。

SELECT SUBSTR(History, INSTR(History, ' on ') + 3) AS subject
FROM Employee
WHERE subject LIKE '%desk%'
AND ROWNUM <= 50;

2 个答案:

答案 0 :(得分:3)

对于类似条件这样更复杂的情况,您可以使用REGEXP_LIKE,它使用正则表达式:

SELECT SUBSTR(History, INSTR(History, ' on ') + 3) AS subject
  FROM Employee
 WHERE subject LIKE '%desk%'
   AND REGEXP_LIKE(History, '.*\son\s.*desk.*')
   AND ROWNUM <= 50

您必须使用的最终正则表达式可能与此不同,但是它应该为您提供了一个开始。我很确定您的请求可以通过这种方式解决...

答案 1 :(得分:1)

只需使用LIKE

SELECT SUBSTR(History, INSTR(History, ' on ') + 3) AS subject
FROM Employee
WHERE subject LIKE '%on%desk%' AND ROWNUM <= 50;

我认为LIKE比正则表达式更受青睐,只是因为它应该更快一些。