我有一个名为DOM
列名position
我在位置列
中有以下值列表SN125A,A1234,SSD123,B12347,SDDF234,11123,E1O123,B12345
我的要求是找到第一个字母是Alpha,第二个字母是数字的位置。
所以我期望的职位是
A1234,B12347,E1O123,B12345
一旦找到这些位置,我就需要删除上述位置的第一个字符
所以我的最终输出应该是:
1234,12347,1O123,12345(从上面的位置移除了alpha)
我们如何在Oracle中实现这一目标。
我在查询中尝试了以下REGEXP_LIKE(POSITIONS, '[A-Za-z]')
,但我不确定。
答案 0 :(得分:1)
您应匹配行^
的开头,并测试以下数字
^[A-Za-z][0-9]
您可以这样添加第三个参数来匹配case-insensitive:
REGEXP_LIKE (POSITIONS, '^[A-Z][0-9]', 'i');
您可以使用SUBSTR
删除第一个字符SUBSTR(POSITIONS, 2) AS pos
答案 1 :(得分:0)
dom
是表名,position
是列名
select * from dom;
position
----------
SN125A
A1234
SSD123
B12347
SDDF234
11123
E1O123
B12345
8 rows selected.
1 select substr(position, 2,length(position)) from dom
2* where regexp_like(position,'^[[:alpha:]][[:digit:]]')
SQL> /
SUBSTR(position,2,LENGTH(position))
--------------------------------------------
1234
12347
1O123
12345