トップ / 式評価・文字列・型変換
文字列の中で、指定した部分文字列が最初に現れる位置を求める。
charindex(lit("world"), col("text")) # "hello world" → 7
pl.col("text").str.find("world") # "hello world" → 6
SnowparkのcharindexはSQLのCHARINDEX(POSITIONの別名)に変換され、公式ドキュメントに「1ベースの位置を返す」と明記されている。Polarsのstr.findは文字列メソッドの慣習に沿って0ベース。実行して確認したところ、"hello world"の中の"world"は、Snowpark側の考え方で数えると7文字目(hが1文字目)、Polars側は6(hが0文字目)と、substringのページと同じ「1ベース vs 0ベース」のずれがここにも現れる。
charindexの引数の順序にも注意が必要(inspect.signatureで確認)=Snowparkは「探したい文字列」が第1引数、「探される側の文字列」が第2引数という、直感(対象が先)と逆の順序。array_containsのページと同じ「値が先、対象が後」という並びなので、混同しやすい関数どうしとして併せて覚えておくとよい。
Polars 1.36.1 で実行確認 / Snowpark Python SDK 1.51.1 で静的検証(2026-08-30)