我想在下面的txt中打印字數,忽略特殊字符,如=,;:'。這個函數已經可以工作了,但是我在這裏找到的所有例子都不能正常工作,這就是我所嘗試過的。用正則表達式刪除空格,逗號,冒號,分號
的TXT是:
select name from v$database; select serial# from db4sql; clear
Select (length (txt) - length(regexp_replace(txt, '[0-9\. ,]+$',''))
我想在下面的txt中打印字數,忽略特殊字符,如=,;:'。這個函數已經可以工作了,但是我在這裏找到的所有例子都不能正常工作,這就是我所嘗試過的。用正則表達式刪除空格,逗號,冒號,分號
的TXT是:
select name from v$database; select serial# from db4sql; clear
Select (length (txt) - length(regexp_replace(txt, '[0-9\. ,]+$',''))
我想打印的單詞數在以下TXT忽略特殊字符,例如=;:」。
任何你會做起來很複雜忽略標點符號時,所有你需要的是算的話的數量。這是一個簡單的查詢使用REGEXP_COUNT和[[:blank:]]字符類。
SQL> WITH DATA AS(
2 SELECT q'[select name from v$database; select serial# from db4sql; clear]' txt
3 FROM dual
4 )
5 SELECT REGEXP_COUNT(txt, '[^[:blank:]]+') cnt
6 FROM DATA
7/
CNT
----------
9
SQL>
刪除空格,昏迷,冒號,分號用正則表達式
確定。如果您只想替換標點並僅返回純文本字母,則使用[[:punct:]]字符類。
SQL> WITH DATA AS(
2 SELECT q'[select name from v$database; select serial# from db4sql; clear]' txt
3 FROM dual
4 )
5 SELECT REGEXP_replace(txt, '[[:punct:]]') cnt
6 FROM DATA
7/
CNT
----------------------------------------------------------
select name from vdatabase select serial from db4sql clear
SQL>
select語句將永遠給你的長度不是單詞數字符串中,我已經修改了查詢。請查看是否適合您的需要,
SQL> declare
2 txt varchar2(1000):='select name from v$database; select serial# from db4sql; clear ';
3 newval varchar2(100);
4 begin
5 select REGEXP_COUNT(txt, '[^ ]+')into newval from dual;
6 dbms_output.put_line('the total number of words are '||newval);
7 end;
8
9 /
the total number of words are 9
PL/SQL procedure successfully completed.
爲什麼在普通SQL中可以完成相同的PL/SQL? –