我对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;
答案 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
比正则表达式更受青睐,只是因为它应该更快一些。