2012-04-09 67 views
-1

請問有沒有人知道如何從一個巨大的字符串中使用pl/sql獲取特定的字符串, 我是創建查詢的初學者,所以任何幫助都會有用。 順便說一句我不想使用的功能:select substr(*,*,*)from * cuz輸入是可變的,所以任何一個人都可以幫我解決這個問題, 和你建議我使用block那種情況。從字符串中獲取特定單詞,ORACLE

感謝&問候,

+2

在PL/SQL你不需要使用SELECT來使用substr。你可以直接調用它:v_result = substr(p_input,1,2); 根據你實際嘗試實現的內容,還可以看看[instr](http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions068.htm),[regexp_substr](http: //docs.oracle.com/cd/B19306_01/server.102/b14200/functions131.htm)和[regexp_instr](http://docs.oracle.com/cd/B13789_01/server.101/b10759/functions114.htm )。 – Viehzeug 2012-04-09 06:58:05

+3

當提問這樣的問題時,你應該提供一些樣本輸入和一些優化的輸出。幫助我們來幫助你! – APC 2012-04-09 15:07:44

+0

你是在pl/sql還是sql?有些背景會幫助你。 – 2012-04-11 13:39:05

回答

3

這聽起來像你正在尋找一個更大的字符串中的特定字符串。如果是這樣,你可能尋找的功能INSTR:

http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_1103.htm

+0

鏈接到Oracle文檔而不是第三方會更好:http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_1103.htm – 2012-04-11 13:37:55

+0

@BurhanAli謝謝,鏈接已更新。 – 2012-04-11 15:20:10

2

據我的理解到要check您的問題specific word是否存在於string or not,如果是這樣的問題,你可以找到下面的解決方案。

DECLARE 
v_string VARCHAR2(200):='MY NAME IS GAURAV SONI'; 
v_check PLS_INTEGER; 
BEGIN 

v_check:=INSTR(v_string,'GAURAV'); --this is case sensitive 

IF v_check >0 THEN 
dbms_output.put_line('Word exists'); 
END IF; 

END; 

在我們的字符串MY NAME IS GAURAV SONI搜索詞GAURAV以上塊和這個詞存在12地方。

請注意,這是Case sensitive,如果您將字gauravv_check的值將爲zero

如果您正在尋找Case insensitive然後再對正則表達式在Oracle REGEXP_INSTR到位INSTR .Read甲骨文文件的使用此功能REGEXP_INSTR

Worked out example in SQL Fiddle

相關問題