【问题标题】:Regular expression for gettin data after - in sqlsql中获取数据后的正则表达式
【发布时间】:2016-04-20 23:56:21
【问题描述】:

我有一列包含分配编号,例如 - 11827,27266,91717,09818-2,726252-3,8716151-0,827272,18181

现在我正在选择像

这样的记录
select assignment_number from table;

但现在我希望以这样一种方式检索列详细信息,即仅在没有 -2 -3 等的情况下检索数字

726252-3---> 726252  8716151-0-->8716151

我知道我可以为此使用正则表达式,但我不知道如何使用它

【问题讨论】:

  • 永远不要将数据存储为逗号分隔的项目,这只会给您带来很多麻烦。每行一个值是 SQL 方式!
  • @jarlh ,这只是数据的一个例子。我的数据只检索每个 roe 一个值

标签: sql regex oracle oracle-sqldeveloper


【解决方案1】:

这将选择字符-之前的所有内容:

^([^-]+)

来自726252-3 将匹配726252

【讨论】:

    【解决方案2】:

    你会使用regexp() substr:

    select regexp_substr(assignmentnumber, '[0-9]+')
    

    这将返回字符串中遇到的第一个数字字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 2012-12-04
      • 2021-09-09
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      相关资源
      最近更新 更多