我有这样的字符串:
16.09.D 25435 11141 Joseph Martin Smith 3333 Kairo
Bristol 2223 Anna Franklin
Soul 23333333 Henry Bayes
我想从这些字符串中获取名称。修复的事情是名字总是在数字后面,但正如你所看到的,在第一个字符串中,有一些数字在John Smith之后。 我的代码现在是:
regexp_substr(string, '([0-9]+ )([^0-9]+\D)', 1, 1, 'i', 2))
问题是,从第一个字符串开始,我得到了名字,但之后会有一个whitespace
个字符。如何从第一个字符串中获取名称,之后没有任何whitespaces
?
答案 0 :(得分:1)
您可以使用LTRIM
从字符串左侧删除空格,并使用RTRIM
删除右侧空格。见下文:
SELECT
regexp_substr('16.09.D 25435 11141 Joseph Martin Smith 3333 Kairo', '([0-9]+ )([^0-9]+\D)', 1, 1, 'i', 2) Orig_Strng,
ltrim(rtrim(regexp_substr('16.09.D 25435 11141 Joseph Martin Smith 3333 Kairo', '([0-9]+ )([^0-9]+\D)', 1, 1, 'i', 2))) Spce_removed
FROM dual;
检查:
SELECT
LENGTH(regexp_substr('16.09.D 25435 11141 Joseph Martin Smith 3333 Kairo', '([0-9]+ )([^0-9]+\D)', 1, 1, 'i', 2)) Orig_Strng,
LENGTH(ltrim(rtrim(regexp_substr('16.09.D 25435 11141 Joseph Martin Smith 3333 Kairo', '([0-9]+ )([^0-9]+\D)', 1, 1, 'i', 2)))) Spce_removed
from dual;
Output:
Orig_Strng Spce_removed
----- -----
20 19