有一個Trim
函數,我可以修剪一個特定的字符,但我想知道它是否可以修整整數。從一個字符串修剪整數
我有一個字符串列表:
'ABC01'
'ABCD02'
'AB5123'
長度和數量是不規則的。 後,我運行一個SQL命令,我想會得到:
'ABC'
'ABCD'
'AB'
有一個Trim
函數,我可以修剪一個特定的字符,但我想知道它是否可以修整整數。從一個字符串修剪整數
我有一個字符串列表:
'ABC01'
'ABCD02'
'AB5123'
長度和數量是不規則的。 後,我運行一個SQL命令,我想會得到:
'ABC'
'ABCD'
'AB'
我會使用translate function。與簡單的文本處理功能相比,Oracle中的REGEXP功能往往是CPU豬。
select translate(string, 'A1234567890', 'A')
from t;
的「A」的第二個參數的開始,最後一個參數了匹配的翻譯「A」 s到「A」 S,什麼都不做,但沒有在第三個參數字符串,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.
您可以使用功能REGEX_REPLACE:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm
SELECT regexp_replace(<<column name>>, '[[:digit:]]', null)
FROM <<table name>>
會從字符串中刪除所有的數字。
select REGEXP_REPLACE(YourColumn, '[0-9]+', '') from YourTable
在這個SQLFiddle看看:http://sqlfiddle.com/#!4/b8a83/1