my opinion is my own

Snowflakeで名字と名前を抽出する(POSITION関数)

名前の名字と名前を抽出する(スペース区切りの場合)

対象データ

imazaj#XSMALL@SQLDB.PUBLIC>select name from CUSTOMERS limit 5;
+-------------+
| NAME        |
|-------------|
| 石塚      |
| 長坂 賢介   |
| 野中 裕之   |
| 髙松      |
| 小倉 慎太郎 |
+-------------+

Position関数を使う。PostgreSQLの場合のSTRPOS、Oracleの場合のINSTR。

POSITION — Snowflake Documentation

POSITION( <expr1>, <expr2> [ , <start_pos> ] )

POSITION( <expr1> IN <expr2> )

引数
必須:

expr1
検索する値を表す文字列またはバイナリ式。

expr2
検索する値を表す文字列またはバイナリ式。

オプション:

start_pos
検索を開始する位置を示す番号です(1 は expr2 の開始を表します)。

デフォルト: 1
select
  name,
  SUBSTR(name, 1, POSITION(' ', name) -1) as lastname,
  SUBSTR(name, POSITION(' ', name)) as firstname
from
  customers
limit 5;
imazaj#XSMALL@SQLDB.PUBLIC>select
                             name,
                             SUBSTR(name, 1, POSITION(' ', name) -1) as lastname,
                             SUBSTR(name, POSITION(' ', name)) as firstname
                           from
                             customers
                           limit 5;
+-------------+----------+-----------+
| NAME        | LASTNAME | FIRSTNAME |
|-------------+----------+-----------|
| 石塚      | 石塚     |         |
| 長坂 賢介   | 長坂     |  賢介     |
| 野中 裕之   | 野中     |  裕之     |
| 髙松      | 髙松     |         |
| 小倉 慎太郎 | 小倉     |  慎太郎   |
+-------------+----------+-----------+
5 Row(s) produced. Time Elapsed: 0.974s
---

関連しているかもしれない記事


#Snowflake #SQL