1. ホーム
  2. データベース
  3. mssql2008

SQLにおけるpatindex関数の使用方法を詳しく説明します。

2022-01-19 19:19:06

構文形式です。PATINDEX ( '%pattern%' , 式 )

式expressionの中で、パターン文字列が最初に出現する位置を1から順に返します。

パターン文字列がexpression式に見つからない場合は0を返す。このデータ型は、すべての有効なテキストと文字列に対して有効である。

この関数の具体的な使い方を記述する。

1. PATINDEX ( '%pattern%' , 式 )

pattern%'の使い方は,'%pattern%'のような使い方と似ている.つまり,そのパターン文字列がexpressionで見つかるかどうかをファジーに見つけ,見つけ,その最初の出現を返すのである.

例えば

select patindex('%b%','abcaabbeeabb')

結果5、abbが初めて登場するところです。

2. PATINDEX ( '%pattern' , 式 )

'%pattern'は、'%pattern'のような使い方と似ていますが、その前にファジールック、つまり、式の中でパターンが終わる位置を探す、つまり後ろからマッチングするようになります。

例えば

select patindex('%b','abcaabbeeabb')

abbの後に最初に現れる位置である10を返します。

select patindex('%b','abcaabbeeabbr')

後続の最初の文字rがabbにマッチしないため、0を返す

3. PATINDEX ( 'pattern%' , 式 )

pattern%' は 'pattern%' と同様、最初に完全探索を行い、次にあいまい探索を行うというものです。

例えば

select patindex('abb%','abbcaabbeeabb')

開始値と同等の1が返される

select patindex('abb%','arbbcaabbeeabb')

先頭に見つからなければ、その後にいくつあっても0を返します。

4.PATINDEX ( 'pattern' , 式 )

これは完全一致検索と同じで、patternとexpressionが完全に等しいことを意味する。

例えば

select patindex('abb','abb')

1を返します。

select patindex('abb','abbr')

正確に等しくない0を返します

5. patindex('%[パターン]%','ddabcaabbeeabbr')。
patindex('%[^pattern]%','ddabcaabbeeabbr')

ここでまず、特定の特殊文字を指定する[]の使い方から見ていきましょう。[^]は[]以外の文字列で、[]はそのそれぞれです。

例えば

Symbol Meaning

LIKE '5[%]' 5%

LIKE '[_]n' _n

LIKE '[a-cdf]' a, b, c, d, or f

LIKE '[-acdf]' -, a, c, d, or f

LIKE '[ [ ]' [

LIKE ']' ]

LIKE 'abc[_]d%' abc_d and abc_de

LIKE 'abc[def]' abcd, abce, and abcf

というように。

select patindex('%[d]%','rcrdsddddaadadffdr')

rcrdsddddaadffdr という文字列の [] 内の d の最初の出現箇所である 4 を返します。

select patindex('%[cd]%','rcrdsdddrdaadadffdr')

c,dが2, []のいずれかに含まれる位置と、その位置の最初の出現を返します。cはこの文字列で最初に出現する2、dは4なので、結果は最初の1つです。

select patindex('%[sd]%','rcrdsdddrdaadadffdr')

4、[]内のc,dの位置、この文字列の最初の位置を返します。

select patindex('%[^r]%','rrrdsdddrdaadadffdr')

4を返す。[]内の文字列の一致する文字以外は、dの最初の出現が[^r]にないので、最初のものを探すだけでよい。

select patindex('%[^rd]%','rrrdsdddrdaadadffdr')

5を返す。[]内の文字列の一致する文字以外は、sの最初の出現が[^rd]にないので、最初のものを探すだけである。

select patindex('%[^rsd]%','rrrdsdddrdaadadffdr')

11を返す。[]内の文字列の一致する文字を除き、aの最初の出現は[^rsd]にないので、最初のものを見つけるだけでよい。

SQLのpatindex関数の使い方についての記事は以上です。SQLのpatindex関数についてもっと知りたい方は、過去の記事を検索するか、以下の記事を引き続きご覧ください。