Skip to main content

POSITION (SQL)

文字列の中で部分文字列が占める位置を返す文字列関数です。

構文

POSITION(substring IN string)

概要

POSITION は、string 内の substring の最初の場所の位置を返します。位置情報は、整数として返されます。substring が見つからない場合、0 (ゼロ) が返されます。いずれかの引数に NULL 値が渡されると、POSITION は NULL を返します。

POSITION は、大文字と小文字を区別します。大小文字変換関数の 1 つを使用して、文字列の大文字と小文字のインスタンスをどちらも配置します。

POSITION、INSTR、CHARINDEX、および $FIND

POSITIONINSTRCHARINDEX、および $FIND はすべて文字列内の指定された部分文字列を検索し、最初に一致した位置に対応する整数位置を返します。CHARINDEXPOSITION、および INSTR は、一致した部分文字列の最初の文字の整数位置を返します。$FIND は、最初に一致した部分文字列の次の文字の整数位置を返します。CHARINDEX$FIND、および INSTR では、部分文字列の検索を開始する位置を指定することができます。INSTR では、その開始位置から数えて何個目の部分文字列かを指定することもできます。

以下に、4 つの関数にすべてのオプション引数を指定した例を示します。string および substring の位置はそれぞれの関数で異なります。

SELECT POSITION('br' IN 'The broken brown briefcase') AS Position,
       CHARINDEX('br','The broken brown briefcase',6) AS Charindex,
       $FIND('The broken brown briefcase','br',6) AS Find,
       INSTR('The broken brown briefcase','br',6,2) AS Inst

部分文字列を検索する関数のリストは、"文字列操作" を参照してください。

引数

substring

検索する部分文字列。式は、列の名前、文字列リテラル、または他のスカラ関数の結果となります。基本データ型は、(CHAR や VARCHAR2 など) さまざまな文字タイプとして表示されます。

IN string

substring の検索が行われる文字列式。

以下の例は、“b” が文字列の 11 番目の文字であるため 11 を返します。

SELECT POSITION('b' IN 'The quick brown fox') AS PosInt

以下の例は、Sample.Person テーブル内の各名前に対する姓 (苗字) の長さを返します。残りの名前フィールドから姓を区切るために使用するコンマを配置し、次にその位置から 1 を減算します。

SELECT Name,
POSITION(',' IN Name)-1 AS LNameLen
FROM Sample.Person

以下の例では、Sample.Person テーブル内の各名前にある文字 “B” の最初のインスタンスの位置を返します。POSITION は大文字と小文字を区別するため、%SQLUPPER 関数を使用して、検索を実行する前にすべての名前の値を大文字に変換します。%SQLUPPER は文字列の最初に空白スペースを加えるため、この例では 1 を減算して、実際の文字位置を取得します。指定した文字列を配置できないと、検索はゼロ (0) を返します。この例では、1 を減算しているので、これらの検索で表示される値は -1 です。

SELECT Name,
POSITION('B' IN %SQLUPPER(Name))-1 AS BPos
FROM Sample.Person

関連項目

FeedbackOpens in a new tab