2012-04-09 42 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