【问题标题】:Oracle get substring before a spaceOracle在空格前获取子字符串
【发布时间】:2013-01-15 07:02:09
【问题描述】:

我有一个中间有空格的字符串,我需要在空格之前获取第一个字符串(可以是数字)。

 WITH test_data AS (
  SELECT '123642134  10' AS quarter_cd FROM dual UNION ALL --VALID
)

 select *
  from test_data
 where regexp_like(quarter_cd, '', 'c')

输出应该是:

123642134

【问题讨论】:

    标签: sql regex oracle


    【解决方案1】:
    Substr (quarter_cd, 1,instr(quarter_cd,' ') - 1)
    

    应该这样做。

    【讨论】:

    • @vivek 你没有指定你需要它作为一个正则表达式。你为什么想要正则表达式.. 作业? Regexp_substr (quarter_cd, '^[^ ]+ ') 也应该这样做。
    • 这不是家庭作业,我是 oracle 新手,所以只是痴迷于通过 reg_ex 解决它!现在工作,谢谢大佬。如果你能给出一点解释,那就太好了。!!!
    • @Vivek 好的 np。 ^ 是字符串的开头,但在方括号内 ^ 表示“不是”。所以它说^ 从字符串的开头开始,[^ ] 匹配非空格。 + 表示 1 次或多次(因此匹配 1 个或多个 NON 空格)。如果你只想匹配数字,你可以用 '^[0-9]+' 代替
    【解决方案2】:
    SELECT Rtrim(Substr('123642134  10',1,Instr('123642134  10',' '))) AS quarter_cd FROM dual;
    

    上层查询中字符串函数的使用

    • Instr()- 从给定的字符串中获取任何字符或空格的位置。
    • Substr()- 从给定字符串中获取子字符串。
    • Rtrim()- 从右侧删除空格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 2021-11-25
      • 2022-12-29
      • 2021-02-03
      • 1970-01-01
      相关资源
      最近更新 更多