我可以修剪一个特定字符的Trim
函数,但我想知道它是否可以修剪整数。
我有一个字符串列表:
'ABC01'
'ABCD02'
'AB5123'
长度和数量不规则。 运行SQL命令后,我想得到这个:
'ABC'
'ABCD'
'AB'
答案 0 :(得分:3)
我会使用translate function。与简单的文本处理函数相比,Oracle中的REGEXP函数往往是CPU占用的。
select translate(string, 'A1234567890', 'A')
from t;
第二个参数开头的“A”,最后一个参数的匹配A将“A”转换为“A”,什么都不做,但是第三个参数字符串中没有东西,ORACLE将返回null。
编辑 简单测试用例
SQL> create table t (string varchar2(100));
Table created.
SQL> insert into t values ('ABC01');
1 row created.
SQL> insert into t values ('ABCD02');
1 row created.
SQL> insert into t values ('AB5123');
1 row created.
SQL> insert into t values ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'
2 || 'abcdefghijklmnopqrstuvwxyz1234567890');
1 row created.
SQL> insert into t values ('123AB456');
1 row created.
SQL> insert into t values ('!Whatever!1');
1 row created.
SQL> commit;
Commit complete.
SQL> select translate(string, 'A1234567890', 'A')
2 from t;
TRANSLATE(STRING,'A1234567890','A')
---------------------------------------------------
ABC
ABCD
AB
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
AB
!Whatever!
6 rows selected.
答案 1 :(得分:2)
select REGEXP_REPLACE(YourColumn, '[0-9]+', '') from YourTable
看看这个SQLFiddle:http://sqlfiddle.com/#!4/b8a83/1
答案 2 :(得分:1)
您可以使用REGEX_REPLACE函数:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm
答案 3 :(得分:1)
SELECT regexp_replace( <<column name>>, '[[:digit:]]', null )
FROM <<table name>>
将删除字符串中的所有数字。