PL\SQL 中不同字符串的 Regexp substr 起始位置
Regexp substr starting position in different strings in PL\SQL
我有这样的字符串:
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
?
您可以使用 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
我有这样的字符串:
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
?
您可以使用 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