目次

Search

  1. はじめに
  2. トランスフォーメーション言語
  3. 定数
  4. 演算子
  5. 変数
  6. 日付
  7. 関数
  8. カスタム関数の作成
  9. カスタム関数APIリファレンス

トランスフォーメーション言語リファレンス

トランスフォーメーション言語リファレンス

INSTR

INSTR

文字列の中で、指定した文字が左から数えて何文字目にあるかを返します。

構文

INSTR(
string
,
search_value
[,
start
[,
occurrence
[,
comparison_type
]]] )
以下の表に、このコマンドの引数を示します。
引数
必須/オプション
説明
文字列
必須
文字列はすべて文字からなっていなければなりません。評価したい値を渡します。有効なトランスフォーメーション式を必要に応じて入力できます。式の結果は文字列でなければなりません。文字列ではない場合、評価する前にINSTRが値を文字列に変換します。
search_value
必須
任意の値。検索値では、大文字と小文字が区別されます。検索したい文字または文字列を指定します。search_valueは、文字列の一部に一致する必要があります。たとえば、
INSTR('Alfred Pope', 'Alfred Smith')
と記述すると、関数は0を返します。
有効なトランスフォーメーション式を必要に応じて入力できます。文字列を検索したい場合は、'abc'のように検索したい文字列を一重引用符で囲みます。
start
オプション
整数値でなければなりません。文字列内で検索を開始する位置を示します。有効なトランスフォーメーション式を必要に応じて入力できます。
デフォルト値は1です。つまり、INSTRは文字列の最初の文字から検索を開始します。
開始位置が0の場合、INSTRは文字列の最初の文字から検索を開始します。開始位置が正の数である場合、INSTRは文字列の先頭からその数だけ数えた位置から検索を開始します。開始位置が負の数である場合、INSTRは文字列の最後からその数だけ数えた位置から検索を開始します。この引数を省略すると、関数はデフォルト値の1を使用します。
occurrence
オプション
0より大きい正の整数。有効なトランスフォーメーション式を必要に応じて入力できます。検索値が文字列内に複数回出現する場合、何回目の出現を検索するかを指定できます。たとえば、開始位置から2回目に出現する検索値を検索する場合は、2を入力します。
この引数を省略すると、関数はデフォルト値の1を使用します。この場合、INSTRは最初に出現する検索値を検索します。小数を渡すと、
PowerCenter統合サービス
はそれを最も近い整数値に丸めます。負の整数または0を渡すと、セッションは失敗します。
comparison_type
オプション
PowerCenter統合サービス
をUnicodeモードで実行するときの、言語またはバイナリのいずれかの文字列の比較型。
PowerCenter統合サービス
をASCIIモードで実行するときは、比較型は常にバイナリです。
言語比較では言語固有の照合規則を考慮し、バイナリ比較ではビット単位の比較を行います。たとえば、ドイツ語のシャープ文字であるsは、言語比較では文字列"ss"に一致しますが、バイナリ比較では一致しません。 バイナリ比較は、言語比較より高速に実行されます。
0または1のいずれかの整数値である必要があります。
  • 0:INSTRは言語文字列比較を行います。
  • 1:INSTRはバイナリ文字列比較を行います。
デフォルトは0です。
0と入力する場合、セッションソート順はバイナリにできません。

戻り値

検索が成功した場合は、整数。この整数は、
search_value
の最初の文字が文字列内で左から数えて何文字目にあるかを示します。
検索に失敗した場合は、0です。
関数にNULL値を渡した場合はNULLです。

次の式は、各会社名の先頭から数えて、文字‘a’ が最初に出現する位置を返します。
search_value
引数では大文字と小文字が区別されるため、‘Blue Fin Aqua Center’の‘A’はスキップし、‘Aqua’の‘a’の位置を返します。
INSTR( COMPANY, 'a' )
COMPANY
RETURN VALUE
Blue Fin Aqua Center
13
Maco Shark Shop
2
Scuba Gear
5
Frank's Dive Shop
3
VIP Diving Club
0
次の式は、各会社名の先頭から数えて、文字‘a’が2回目に出現する位置を返します。
search_value
引数では大文字と小文字が区別されるため、‘Blue Fin Aqua Center’の‘A’はスキップし、0を返します。
INSTR( COMPANY, 'a', 1, 2 )
COMPANY
RETURN VALUE
Blue Fin Aqua Center
0
Maco Shark Shop
8
Scuba Gear
9
Frank's Dive Shop
0
VIP Diving Club
0
次の式は、各会社名の最後の文字から数えて、文字‘a’が2回目に出現する位置を返します。
search_value
引数では大文字と小文字が区別されるため、'Blue Fin Aqua Center'の'A'はスキップし、0を返します。
INSTR( COMPANY, 'a', -1, 2 )
COMPANY
RETURN VALUE
Blue Fin Aqua Center
0
Maco Shark Shop
2
Scuba Gear
5
Frank's Dive Shop
0
VIP Diving Club
0
次の式は、各会社名の最後の文字から数えて、文字列‘Blue Fin Aqua Center’の最初の文字の位置を返します。
INSTR( COMPANY, 'Blue Fin Aqua Center', -1, 1 )
COMPANY
RETURN VALUE
Blue Fin Aqua Center
1
Maco Shark Shop
0
Scuba Gear
0
Frank's Dive Shop
0
VIP Diving Club
0

ネストされたINSTRの使用

INSTR関数を他の関数の中にネストして、複雑な処理を実行できます。
次の式は、文字列を最後の文字から順に評価します。文字列内の最後(一番右側)のスペースを見つけて、それより左側にある文字をすべて返します。
SUBSTR( CUST_NAME,1,INSTR( CUST_NAME,' ' ,-1,1 ))
CUST_NAME
RETURN VALUE
PATRICIA JONES
PATRICIA
MARY ELLEN SHAH
MARY ELLEN
次の式は、文字列から文字#を削除します。
SUBSTR( CUST_ID, 1, INSTR(CUST_ID, '#')-1 ) || SUBSTR( CUST_ID, INSTR(CUST_ID, '#')+1 )
CUST_ID
RETURN VALUE
ID#33
ID33
#A3577
A3577
SS #712403399
SS 712403399