如何从 PL/SQL 中的字符串中删除最后 3 个单词?

How to remove the last 3 words from a string in PL/SQL?

我有这样的字符串:

Jack & Bauer Limited Company Bristol

Streetfood Limited Company München

Brouse with High Jack UnlimiteD Company London

我想要的只是公司名称,例如:

Jack & Bauer

Streetfood

Brouse with High Jack

所以在任何情况下,我都必须删除最后 3 个单词,因为名称可以包含很多单词。 我知道我必须使用正则表达式,但我不知道如何使用。

这是一种方法:

select regexp_replace(str, '( [^ ]+){3}$', '')

Here 是一个 rextester。

虽然您可以使用正则表达式来做到这一点,但您不必这样做。可以使用 INSTR 和 SUBSTR 的组合来完成此任务:

SELECT SUBSTR(FIELD1, 1, INSTR(FIELD1, ' ', -1, 3)-1) AS NAME
  FROM TABLE1

SQLFiddle here

祝你好运。