3

有一个Trim函数可以修剪特定字符,但我想知道它是否可以修剪整数。

我有一个字符串列表:

'ABC01'
'ABCD02'
'AB5123'

长度和数量不规则。运行 SQL 命令后,我想得到这个:

'ABC'
'ABCD'
'AB'
4

4 回答 4

3

我会使用翻译功能。与更简单的文本处理函数相比,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.
于 2012-08-08T18:31:04.117 回答
2
select REGEXP_REPLACE(YourColumn, '[0-9]+', '') from YourTable

看看这个 SQLFiddle:http ://sqlfiddle.com/#!4/b8a83/1

于 2012-08-08T18:21:01.157 回答
1

您可以使用函数 REGEX_REPLACE:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm

于 2012-08-08T18:17:34.870 回答
1
SELECT regexp_replace( <<column name>>, '[[:digit:]]', null )
  FROM <<table name>>

将从字符串中删除所有数字。

于 2012-08-08T18:19:26.550 回答