【PostgreSQL】文字位置の取得(INSTR、LOCATE、CHARINDEX)

2020年7月12日

スポンサーリンク

説明

文字列の開始位置から、検索文字が何文字目にあるか検索する。

(OracleでのINSTR、SQL ServerでのCHARINDEX、MySQLでのLOCATEに相当します)

 

 

構文

strpos( 検索対象の文字列 , 検索する文字列)

見つからなかった場合は0が、見つかった場合は1以上の数値が返ります。

 

 

使用例

select strpos('windows','d');    --4(=4文字目にある)
select strpos('abcdefg','ef');   --5(=5文字目にある)
select strpos('abcdefg','xyz');  --0(見つからない場合は0が返る)

 

 

ほんのちょっとだけ発展形

strposでは大文字小文字が区別されるため、文字一致の判定を少し柔らかくしたいと思います。

下の例では検索対象と検索する文字列をそれぞれ、upperとtrimをかけて検索します。

select strpos(trim(upper('ABCDEFGHIJKLMN')),trim(upper(' efg ')));  --5

 

 

PostgreSQLの構文まとめを書いています

入門~経験者まで「基本構文・こんな時どう書くんだっけ?」のまとめ