`

INSTR字符串函数

 
阅读更多
  
       INSTR (源字符串, 目标字符串, 起始位置, 匹配序号)

  在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。

  语法如下:

  
instr( string1, string2 [, start_position [, nth_appearance ] ] )


  参数分析:

  
string1:源字符串,要在此字符串中查找。
  string2: 要在string1中查找的字符串.
  start_position: 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
  nth_appearance: 代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

  注意:

  如果String2在String1中没有找到,instr函数返回0.

  示例:

  SELECT instr('syranmo','s') FROM dual; -- 返回 1
  SELECT instr('syranmo','ra') FROM dual;  -- 返回 3
  SELECT instr('syran mo','a',1,2) FROM dual;  -- 返回 0


  (根据条件,由于a只出现一次,第四个参数2,就是说第2次出现a的位置,显然第2次是没有再出现了,所以结果返回0。注意空格也算一个字符!)

  SELECT instr('syranmo','an',-1,1) FROM dual;  -- 返回 4

  (就算是由右到左数,索引的位置还是要看‘an’的左边第一个字母的位置,所以这里返回4)

  SELECT instr('abc','d') FROM dual;  -- 返回 0

  注:也可利用此函数来检查String1中是否包含String2,如果返回0表示不包含,否则表示包含。



几个我写的代码:

[1].举例

select instr(a.name,',',1,1)+1 AA1,
      instr(a.name,',',1,2)+1 AA2,
      instr(a.name,',',1,3)+1 AA3,
      instr(a.name,',',1,4)+1 AA4,
      instr(a.name,',',1,5)+1 AA5
from(select ',容桂,广珠,西线,管理中心,D8,合胜围,华盛西路,工业区,黄甫大岑置业,一期' as name from dual) a;

AA1 AA2 AA3 AA4 AA5
--- --- --- --- ---
  2   5   8  11  16 


[2].WHERE条件批量模糊匹配。


with keywords_table as(
  select 1 id,'容桂,广珠,西线,管理中心,D8,合胜围,华盛西路,工业区,黄甫大岑置业,一期,14栋,逸湾,剑桥,印象,D7,驾驶学校,科苑二路D8' Name from dual
)
select a.id,
  substr(','||a.name||',',
          instr(','||a.name,',',1,b.rn)+1,
          instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
    )name
from keywords_table a,
  (  select rownum rn from dual
     connect by rownum<100
    )b
where length(a.name)-length(replace(a.name,','))+1 >= b.rn



ID NAME                                                                
-- ------------------------
 1 容桂                                                                  
 1 广珠                                                                  
 1 西线                                                                  
 1 管理中心                                                               
 1 D8                                                                    
 1 合胜围                                                                
 1 华盛西路                                                               
 1 工业区                                                                
 1 黄甫大岑置业                                                           
 1 一期                                                                  
 1 14栋                                                                  
 1 逸湾                                                                  
 1 剑桥                                                                  
 1 印象                                                                  
 1 D7                                                                    
 1 驾驶学校                                                               
 1 科苑二路D8                                                             

 选定了 17 行 



select sitename from(
    select siContent.sitename,keyList.name
    from (select sitename from site_info where rownum<=100) siContent,(
        with keywords_table as(
          select 1 id,'容桂,广珠,西线,管理中心,D8,合胜围,华盛西路,工业区,黄甫大岑置业,一期,14栋,逸湾,剑桥,印象,D7,驾驶学校,科苑二路D8' Name from dual
        )
        select a.id,
          substr(','||a.name||',',
                  instr(','||a.name,',',1,b.rn)+1,
                  instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
            )name
        from keywords_table a,
          (  select rownum rn from dual
             connect by rownum<100
            )b
        where length(a.name)-length(replace(a.name,','))+1 >= b.rn
    ) keyList
    where siContent.sitename like ('%'||keyList.name||'%')
)group by sitename;


SITENAME
---------------------
顺德容桂华口工业区1
顺德容桂华口2
顺德容桂华口D7
顺德容桂合胜围D7
顺德容桂华口华天东三路2
顺德容桂镇中山黄甫大岑置业D8
顺德容桂东逸湾剑桥印象D8
顺德均安D7
顺德均安南窖D7
顺德均安牛仔城D7
顺德容桂广珠西线管理中心D7
顺德容桂宝供物流3
顺德大良金沙人家一期14栋M1
顺德容桂广珠西高速容桂管理中心1
顺德容桂镇中山黄甫大岑置业2
顺德容桂华口南坊村2
顺德容桂安宁路D9
顺德大良五沙欧洲工业园D7
顺德均安祥安南路D7
顺德容桂华口工业区3
顺德容桂合胜围2
顺德容桂华盛西路D9
顺德容桂桂洲爱德D8
顺德容桂宝供物流1
顺德均安天连D8
顺德均安农行D7
顺德均安兆业制衣D7
顺德容桂广珠西线管理中心D9
顺德容桂华口1
顺德容桂驾驶学校D9
顺德容桂科苑二路D8
顺德容桂桂洲爱德3
顺德容桂安宁路D7
顺德容桂大道碧桂路立交2
顺德容桂宝供物流D8
顺德大良金沙人家一期6栋M1
顺德大良金沙人家一期11栋M1
顺德大良五沙安置区D7
顺德容桂高黎工业区D8
顺德容桂华口D9
顺德容桂驾驶学校D7
顺德均安畅兴工业区D8
顺德均安东堤路D8
顺德均安仓门小学D8
顺德均安畅兴工业区二2
顺德大良金沙人家一期2栋M1
顺德容桂恒基D8
顺德容桂海尾工业区D7
顺德容桂容边隆盛围D7
顺德容桂创富商务公寓A座B1F电井M7
顺德均安沙头D8
顺德均安畅兴心安路D8
顺德大良爱信精机D8
顺德均安畅兴工业区二3
顺德容桂高黎工业区3
顺德容桂华口工业区D6
顺德容桂华口工业区D8
顺德容桂华盛西路D7
顺德容桂海尾工业区D9
顺德容桂容边隆盛围D9
顺德容桂扁滘轻轨站D7
顺德容桂桂洲爱德2
顺德均安畅兴工业区二D8
顺德均安天连大道D8
顺德均安畅兴工业区2

选定了 65 行 



[3].将一行中某列MO_GROUP的多个MO拆分成多行。有几个就拆分成几行。

execute immediate 'insert into cy_runtime_log(ID,PROCEDURE_NAME)values(cy_runtime_log_SEQ.nextval,''cy_three_cg_bpc_diptg_result begin'')'; commit;
insert into cy_three_cg_bpc_diptg_result(TTIME,TG,BSC,MO,所需64K传输数,在用64K信道数,所需16K传输数,在用16K传输数)
with keywords_table as(select rownum as id,MO as NAME,length(MO)-length(replace(MO,',')) as MO_LEN,
         TTIME,TG,BSC,MO,所需64K传输数,在用64K信道数,所需16K传输数,在用16K传输数
  from cy_bpc_cg_dip_tg
  where tg in ('RXOTG-200','RXOTG-98')
)
select --a.id,
      a.TTIME,a.TG,a.BSC,
      substr(','||a.name||',',
            instr(','||a.name,',',1,b.rn)+1,
            instr(a.name||',',',',1,b.rn)-instr(','||a.name,',',1,b.rn)
      )name,
      a.所需64K传输数,a.在用64K信道数,a.所需16K传输数,a.在用16K传输数
from keywords_table a,
  (  select rownum rn from dual
     connect by rownum<100
    )b
where MO_LEN >= b.rn;


分享到:
评论

相关推荐

    VB.NET 字符串函数

    VB.NET 字符串函数 VB.NET 字符串函数是一组能够对字符串进行操作和处理的函数,包括字符串比较、转换、提取、格式化等多种操作。这些函数在实际开发中非常有用,可以帮助开发者快速实现字符串相关的功能。 1. ...

    C#字符串函数

    本文将对 C# 字符串函数大全进行详细的介绍,包括 Len、Trim、Ltrim、Rtrim、Mid、Left、Right、LCase、UCase、StrComp、InStr、Split 和 Replace 等函数。 Len 函数 Len 函数用于返回字符串中的字符数目。该函数...

    vb 字符串函数大全

    ### VB字符串函数大全详解 #### 一、简介 在Visual Basic(简称VB)编程语言中,字符串函数是非常重要的一部分,它们被广泛应用于处理文本数据。本文将详细介绍VB中的字符串函数,帮助开发者更好地理解和运用这些...

    Oracle_Sql_中常用字符串处理函数

    Oracle Sql 提供了 INSTR() 函数,用于查找字符串中某个字符的位置。 示例:SELECT INSTR('abcdce', 'c') FROM dual; -- 返回 3 5. 字符替换函数 Oracle Sql 提供了 REPLACE() 函数,用于将字符串中的某个字符...

    VB字符串函数大全

    ### VB字符串函数大全 在Visual Basic (VB)编程语言中,字符串函数是非常重要的组成部分,用于处理文本数据。本文将详细介绍VB中的字符串函数及其用途,帮助开发者更好地理解和运用这些功能强大的工具。 #### Asc...

    instr()函数功能,判断目标字符串是否存在于第一个字符串中

    `instr()` 函数在编程语言中,如VBScript或ColdFusion,是一个非常实用的字符串处理函数,用于在源字符串中查找目标字符串出现的位置。它能够帮助开发者判断目标字符串是否存在于第一个字符串中,并返回目标字符串的...

    JavaScript字符串函数大全

    ### JavaScript字符串函数大全 #### 1. Asc(x) - **功能**:返回字符的ASCII码。 - **参数**: - `x`:需要转换为ASCII码的单个字符。 - **示例**: ```javascript console.log(Asc('A')); // 输出:65 ``` #...

    Oracle 基础语句 函数大全(字符串函数

    5. **INSTR** 和 **INSTRB** 函数:这两个函数查找子字符串在主字符串中的位置。`INSTR` 默认按字符计数,`INSTRB` 按字节计数。例如,`INSTR('Mississippi','i',5,3)` 返回3,表示'i'在'Mississippi'中第3次出现的...

    vba字符串函数汇总vba_cpp.pdf

    VBA提供了丰富的字符串函数以满足不同需求的文本操作,以下是一些基本的VBA字符串函数及其知识点: 1. Len(string)函数用于计算字符串string的长度,即字符串中字符的总数。 2. Trim(string)函数可以去除字符串两...

    mysql常用字符串函数、字符串处理函数大全

    MySQL字符串函数是数据库操作中非常关键的一部分,它们用于处理和操作文本数据。以下是一些常见的MySQL字符串函数及其详细解释: 1. `ASCII(str)`:这个函数返回字符串`str`的第一个字符的ASCII码值。如果`str`为空...

    VB字符串处理函数_字符串处理函数_VB_

    8. **InStr()** 函数:查找字符串中第一次出现指定子串的位置。`InStr("Hello World", "World")` 返回 7。 9. **Upper()** 和 **Lower()** 函数:将字符串转换为全大写或全小写。 10. **Space()** 函数:创建包含...

    C#字符串函数大全-很有用的

    以下是一些C#中常用的字符串函数的详细说明: 1. **Len** 函数:此函数用于计算字符串中字符的数量。例如,`Len("VBSCRIPT")` 返回8,因为"VBSCRIPT"包含8个字符。 2. **Trim, Ltrim, Rtrim** 函数:这三个函数...

    VB常用字符串函数整理

    本文将详细介绍VB中常用的字符串函数,帮助开发者更好地理解和应用这些函数。 首先,`Len`函数用于计算字符串内的字符数目或变量所占的字节数。例如,`Len("example")`将返回7,表示"example"中有7个字符。对于非...

    VB字符串函数

    ### VB字符串函数详解 #### 一、概述 Visual Basic (简称VB) 是一种广泛使用的编程语言,它提供了丰富的内置函数来处理字符串数据。本文将详细介绍VB中常用的字符串操作函数及其应用示例,帮助读者更好地理解和...

    网页编程-ASP字符串函数大全

    ASP字符串函数是Web开发中处理文本数据的重要工具,主要用于创建、操作和管理字符串。这些函数在ASP(Active Server Pages)环境中提供了丰富的功能,使开发者能够有效地处理字符串数据。以下是一些主要的ASP字符串...

    Oracle拆分字符串,字符串分割的函数

    `instr()` 是Oracle中的一个内建函数,它用于查找子串在目标字符串中的位置。例如,`instr(string, substring)` 返回`substring`在`string`中第一次出现的位置。虽然这不是直接的字符串分割函数,但可以配合其他...

    常用SQL字符串函数集锦.

    在SQL(结构化查询语言)中,字符串函数是用于处理文本数据的重要工具。它们可以帮助我们进行各种操作,如提取、转换、格式化和比较字符串。本篇将详细讲解一些常用的SQL字符串函数,以便你在数据库操作中更加...

    Oracle数据库中单行字符串函数简介

    Oracle数据库中的单行字符串函数是处理和操作字符串数据的关键工具,它们主要用于字符串的组合、转换、查找、截取等操作。下面将详细介绍这些函数的功能和用法。 1. ASCII() 函数:ASCII()函数接收一个字符串作为...

    asp.net函数整理(字符串函数)

    以下是对标题和描述中提到的一些 ASP.NET 字符串函数的详细说明: 1. `Abs(number)`:这个函数用于获取数字的绝对值,无论该数字是正还是负。例如,`Abs(-5)` 将返回 5。 2. `Asc(String)`:此函数返回字符串的第...

    Visual Basic中的常用字符串函数

    ### Visual Basic中的常用字符串函数 在Visual Basic编程语言中,字符串处理是非常常见且重要的操作之一。本文将详细介绍Visual Basic中的一些常用字符串函数及其用法,这些函数能够帮助开发者高效地处理字符串数据...

Global site tag (gtag.js) - Google Analytics