我试图在Oracle SQL开发人员中提取部分字符串。一开始就有相同数量的字符,我想切断开始的结束" at" 示例:
第1行Assigned to Bob Smith at the examiner level
。
第2行Assigned to Jane Doe at the corporate level
。
想要返回" Bob Smith
"和" Jane Doe
"
我尝试过使用regex_substr
,但我对每个部分的应用感到困惑。
答案 0 :(得分:2)
你可以使用:
例如,
SQL> WITH sample_data AS(
2 SELECT 'Assigned to Bob Smith at the examiner level' str FROM dual UNION ALL
3 SELECT 'Assigned to Jane Doe at the corporate level' str FROM dual
4 )
5 -- end of smaple_data mimicking real table
6 SELECT rtrim(SUBSTR(str,
7 instr(str, 'Assigned to ', 1, 1) + LENGTH('Assigned to '),
8 instr(str, ' at the ', 1, 1) - LENGTH('Assigned to ')),
9 ' ') sub_str
10 FROM sample_data;
SUB_STR
-------------------------------------------
Bob Smith
Jane Doe
SQL>
答案 1 :(得分:0)
你没说过你正在使用哪种语言。
假设它是Javascript,您可以从原始字符串中获取所有名称,例如text
:
var names = text.match(/Row \d+ Assigned to ([\w\s]+?) at the .+ level/);
如果需要,可以转换成任何方便的语言。