【问题标题】:Obtain part of a string获取字符串的一部分
【发布时间】:2016-06-13 06:59:12
【问题描述】:

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

【问题讨论】:

  • 如果您告诉我们您正在使用什么编程语言,将会很有用。
  • 对不起,我的第一篇文章
  • @user6000266 大声笑,这是一个很好的(忘记写什么语言)。无论如何,欢迎来到 SO!
  • 将语言标签添加到标签列表中,您现在拥有的标签是无用的,还可以编辑您的问题显示您尝试过的内容在所有问题中,否则它们看起来像 give me teh codez 要求。
  • 如果所有的名字都从同一个位置开始,先用SUBSTR截掉开头的文字,再用REGEXP_SUBSTR只取名字。提供所有名称都是 2 个单词,否则你就是 SOL。

标签: sql string oracle substring


【解决方案1】:

你没有说你使用的是哪种语言。

假设它是 Javascript,您可以从原始字符串中获取所有名称,例如 text:

var names = text.match(/Row \d+ Assigned to ([\w\s]+?) at the .+ level/);

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

【讨论】:

    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多