oracle 只取列中并排的数字,而不取列中的其他数字

sqxo8psd  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(130)

我有一个字符串列--名为COLUMN_X --其中有来自用户的关于事务的注解。我需要一个方法来获取只有数字是并排的,而不是那些之前/之后的空间,符号或任何东西。现在我使用这个解决方案:regexp_replace(COLUMN_X,'[^[:digit:]]',''),它几乎没问题,但我遇到了这样的字符串问题:“发票编号11000222(E223)”-最终结果不是“11000222”,而是“1100022223”,我需要它为“11000222”,我如何检索它?我能不能排除人们只输入日期的例子,比如“04062019”--我不想看到数字是“04062019”,而是省略这样的例子。
额外的问题是,如果我可以以某种方式检索发票号码,如果它是这样的:“发票编号BR/13003/21/2”,在这种情况下只检索“BR/13003/21/2”?
我使用了regexp_replace(COLUMN_X,'[^[:digit:]]',''),并试图更改它以获得我想要的结果,但我没有得到我想要的结果,并且这个regexp表达式有一些问题

zlhcx6iw

zlhcx6iw1#

对于第一个模式,您可以使用:

SELECT REGEXP_SUBSTR ('invoice number 1100022223432 [43] (E223)', '[[:digit:]]+?\s')
  FROM dual;

字符串

相关问题