如何在 sql 中获取子字符串或正确条件



Contract_Id的数据如下

abc_rev4,abc_rev1,xxxxx_rev2,yyyyyyyy_rev4 .

我只需要数据中的"rev"。

数据始终以个位数结尾。

那么我将如何在substringright的帮助下提取 rev

PS:rev中"v"的位置始终是最后一个但第一个字符

这将从字符串中提取所有rev实例:

SELECT REGEXP_REPLACE(
         'abc_rev4,abc_rev1,xxxxx_rev2,yyyyyyyy_rev4',
         '[^,]+(rev)d(,|$)',
         '12'
       ) AS revs
FROM   DUAL

输出

REVS
---------------
rev,rev,rev,rev

如果每个列都在单独的列中,则:

WITH table_name ( value ) AS (
  SELECT 'abc_rev4' FROM DUAL UNION ALL
  SELECT 'abc_rev1' FROM DUAL UNION ALL
  SELECT 'xxxxx_rev2' FROM DUAL UNION ALL
  SELECT 'yyyyyyyy_rev4' FROM DUAL
)
SELECT value,
       SUBSTR( value, -4, 3 ) AS rev
FROM   table_name;

输出

VALUE         REV
------------- ---
abc_rev4      rev
abc_rev1      rev
xxxxx_rev2    rev
yyyyyyyy_rev4 rev

最新更新