获取字符串的一部分

时间:2016-03-01 01:29:22

标签: sql string oracle substring

我试图在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,但我对每个部分的应用感到困惑。

2 个答案:

答案 0 :(得分:2)

你可以使用:

  • SUBSTR
  • INSTR

例如,

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/);

如果需要,可以转换成任何方便的语言。