Oracle获取空格前的子字符串

13

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

 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
2个回答

33
Substr (quarter_cd, 1,instr(quarter_cd,' ') - 1)

应该这样做。


2
@vivek,你没有说明你需要它作为正则表达式。你为什么想要正则表达式.. 作业?Regexp_substr(quarter_cd, '^[^ ]+ ')应该可以做到同样的效果。 - DazzaL
这不是作业,我对 Oracle 还很新,所以一直想通过正则表达式来解决它!现在可以工作了,谢谢。如果你能给一个简短的解释就太好了! - Vivek
2
@Vivek 好的,没问题。^ 是字符串的开头,但在方括号内,^ 表示“非”。因此它表示 ^ 从字符串的开头开始,[^ ] 匹配非空格字符。+ 表示匹配 1 次或多次(因此匹配 1 个或多个非空格字符)。如果您只想匹配数字,可以使用 '^[0-9]+'。 - DazzaL

0
SELECT Rtrim(Substr('123642134  10',1,Instr('123642134  10',' '))) AS quarter_cd FROM dual;

在上述查询中使用的字符串函数用途

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接