ホームページ  >  記事  >  データベース  >  Oracleで文字列内の一部の文字をインターセプトする方法

Oracleで文字列内の一部の文字をインターセプトする方法

青灯夜游
青灯夜游オリジナル
2022-02-14 12:47:0556575ブラウズ

Oracle では、Instr() 関数と substr() 関数を使用して、文字列内の文字の一部をインターセプトできます。構文は、「SUBSTR('インターセプトする文字列', インターセプト開始位置, INSTR( '必須インターセプト文字列、'、'検索開始位置'、'出現回数')-1) "。

Oracleで文字列内の一部の文字をインターセプトする方法

このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。

oracle はフィールド内の文字列の一部をインターセプトします

Oracle で Instr() 関数と substr() 関数を使用します:

Oracle では、instr 関数を使用して文字列に指定した文字が含まれているかどうかを判定できます。

構文は次のとおりです:

instr(sourceString,destString,start,appearPosition).   
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

ここで、

  • sourceString はソース文字列を表し、

  • destString はソース文字列を表します。ソース文字列内で検索される部分文字列。

  • start は検索の開始位置を表します。このパラメータはオプションで、デフォルトは 1 です。

  • AppearancePosition は、ソース文字から destString が出現する回数を表します。このパラメータもオプションで、デフォルトは 1 です。

start の値が負の数の場合、それは意味します。検索は右から左に実行されますが、位置データは依然として左から右に計算されます。

戻り値は、見つかった文字列の位置です。

instr 関数の場合、よく次のように使用します。文字列から指定された部分文字列の位置を見つけます。例:

SQL> select instr('yuechaotianyuechao','ao') position from dual;
 POSITION
 ----------
 6

7 番目の文字から検索を開始します

SQL> select instr('yuechaotianyuechao','ao', 7) position from dual;
 POSITION
 ----------
 17

最初の文字から開始し、部分文字列の 2 番目の出現を検索します

SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;
 POSITION
 ----------
 17

instr 関数の場合、次のようにします。多くの場合、次のように使用します。文字列内の指定された部分文字列の位置を検索します。例:

SQL> select instr('abcdefgh','de') position from dual; 
POSITION 
---------- 
4

1から始まると、dは4番目にランクされるので、4が返されます

SQL>select instr('abcdefghbc','bc',3) position from dual; 
POSITION 
---------- 
9

3番目の文字から始まる3番目の文字はcなので、3から始まる文字列 bcを検索し、return 9

substr 関数を使用すると、文字列内の指定された開始位置と長さの文字列を取得します。デフォルトは開始位置から末尾までの部分文字列です。

 substr( string, start_position, [ length ] )       substr('目标字符串',开始位置,长度)

例:

      substr('This is a test', 6, 2)     would return 'is' 
      substr('This is a test', 6)     would return 'is a test' 
      substr('TechOnTheNet', -3, 3)     would return 'Net' 
      substr('TechOnTheNet', -6, 3)     would return 'The'select substr('Thisisatest', -4, 2) value from dual

SUBSTR() function

1. 目的: 指定された文字式またはメモ フィールドの部分文字列から文字列を返します。

2. 文法形式:

substr(string string, int a, int b);
substr(string string, int a) ; 

形式 1:

1. string インターセプトされる文字列

2. a インターセプトされる文字列の開始位置string (注: a が 0 または 1 の場合、インターセプトは最初のビットから開始されます)

3. b インターセプトする文字列の長さ

形式 2:

1. string インターセプトする必要がある文字列

2. a は、a 番目の文字から始まる後続のすべての文字列をインターセプトするものとして理解できます。

oracle は文字列

C3411.907w15 を文字列 C3411 のドットの前でインターセプトします SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15 , '.', 1, 1) - 1)

SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)
  FROM DUAL

C3411.907w15 のドットの後の文字列 907w15 をインターセプト SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.' , 1) , 1) 1)

SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)
  FROM DUAL

プロジェクト適用例:

元の文字列:

オリジナル 7つありますフィールドに「_」が入っています。最後の「_」以降の文字列を取り出したいのですが、どうすれば解決できますか?

2 つのステップ:

最初のステップは、Instr() 関数を使用して 7 番目の「_」文字を見つけることです:

select instr('Q room Netグループ_証券部門_華南地区_深セン市華_営業部_南山前海地区_前海中央エリア_前海第五支店','_', 1, 7) fdisplayname from SHENZHENJM1222.B

または:

select instr('Qfang.com グループ_証券部門_華南地区_深セン市華_事業部_南山前海地区_前海センターエリア_前海五份支店', '_', -1, 1) fdisplayname FROM SHENZHENJM1222.B

#どちらも同じ効果です 下の -1 は右から数えることを意味します 1 は最初の "_" を取得することを意味します

得られた結果は図のとおりです:

ステップ 2、substr() 関数を使用して必要なフィールドを取得します。

select substr (

fdisplayname,instr(fdisplayname,'_',-1 ,1) 1) SHENZHENJM1222 の fdisplayname.B

fdisplayname: を表します。フィールド名、メタ文字列に相当します

導入部分に重点を置きます

1

1 は、ターゲット文字列 "_" の後の最初の文字列のインターセプトを開始することを意味します。

さまざまな数値の状況を見てみましょう:

#select substr(

fdisplayname ,instr( fdisplayname,'_',-1,1) 1) SHENZHENJM1222 からの fdisplayname.B

instr(fdisplayname,'_',-1,1) の 1 の意味を見てみましょう。

# 推奨チュートリアル: 「

Oracle チュートリアル

以上がOracleで文字列内の一部の文字をインターセプトする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。