我有一個PL/SQL過程,我需要一個字符串並刪除所有不是字母的字符。我已經看過一些例子,並閱讀關於REGEXP_REPLACE函數的文檔,但無法理解它的功能。如何從PL/SQL中的字符串中刪除所有不是字母的字符?
這不是重複的,因爲我需要刪除標點符號而不是數字。
我有一個PL/SQL過程,我需要一個字符串並刪除所有不是字母的字符。我已經看過一些例子,並閱讀關於REGEXP_REPLACE函數的文檔,但無法理解它的功能。如何從PL/SQL中的字符串中刪除所有不是字母的字符?
這不是重複的,因爲我需要刪除標點符號而不是數字。
試試這個:
SELECT REGEXP_REPLACE('AB$%c','[^a-zA-Z]', '') FROM DUAL;
或者
SELECT REGEXP_REPLACE(your_column, '[^a-zA-Z]', '') FROM your_table;
閱讀here瞭解更多信息
或者:
select regexp_replace('1A23B$%C_z1123d', '[^A-Za-z]') from dual;
或:
select regexp_replace('1A23B$%C_z1123d', '[^[:alpha:]]') from dual;
第二個考慮像其他可能的字母:
select regexp_replace('123żźć', '[^[:alpha:]]') from dual;
結果:
3210還爲您解答有關的功能是如何工作的問題:第一個參數是源字符串,第二個 - 正則表達式 - 與它匹配的所有內容將被第三個參數替代(可選,默認情況下爲NULL,意味着所有匹配的字符將被刪除)。
瞭解更多關於正則表達式:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm
你可以使用正則表達式這樣的:Oracle查詢的
SELECT REGEXP_REPLACE(UPPER('xYztu-123-hello'), '[^A-Z]+', '') FROM DUAL;
可能重複 - 獲取只有在選擇路線字段](http://stackoverflow.com/questions/2375426/oracle-query-get-only-strings-in-the-select-field) – kevinsky
r egexp_replace(yourcol,'[a-zA-Z]','') – Mihai