このブログでは、Xplentyでよく行われる文字列などの変換処理について解説します。
※今後、新しいケースがあれば、こちらのブログに随時追加していく予定です。
#よく行われる文字列操作
##Q1. 氏名を姓(Last Name)と名(First Name)に分けるには?
STRSPLIT関数を使用することで、区切り文字を指定し、文字列を分割して取得することが可能です。
例:field1:田中 太郎
STRSPLIT(field1,' ').$0
==> 田中
STRSPLIT(field1,' ').$1
==> 太郎
##Q2. 値がひらがなの場合のみ取得するには?
REGEX_EXTRACT関数を使用することで、正規表現を使用し、ひらがなおよび半角/全角スペースを含む文字列を取得することが可能です。
REGEX_EXTRACT(field1,'[ぁ-ん( | )]+',0)
例:field1:やまだ たろう
==> やまだ たろう
例:field1:山田 太郎
==> null
##Q3. 住所を分けるには?
Xplentyでは完全に実現することは難しいですが、以下のような方法で番地部分を分けることが可能です。
Xplentyでは、正規表現を使用して条件にマッチした部分のみを取得することが可能です。
###1. 都道府県部分を取得するには
REGEX_EXTRACT関数を使用し正規表現を使って、条件にマッチする部分を抽出します。
field1: 東京都港区六本木6-10-1
REGEX_EXTRACT(field1,'(..都|..府|..道|([\u4E00-\u9FFF]{2,3})*県)',0)
-> 東京都
###2. 上記以外の部分を取得
INDEXOF関数で、条件にマッチする文字列の場所を判定することが可能です。
field1: 東京都港区六本木6-10-1
field10: 東京都
SUBSTRING(field1,INDEXOF(field1,field10)+Length(field10),Length(field3))
->港区六本木6-10-1
##Q4. Replace関数
###1. 通常文字列の置換
例)field1: '埼玉県埼玉市'
REPLACE(field1,'埼玉市','さいたま市')
-> 埼玉県さいたま市
###2. 一部の文字を除外する
文字列に含まれる「?」などの特殊な文字を置換する場合はエスケープ文字を利用する
?を除外したい場合は\\?
とする
例)field1: '2022/?01/01'
REPLACE(field1,'\\?','')
-> '2022/01/01'
###3. 改行コードの置換
Webアプリケーションデータなどに含まれる改行コードをDBに保存する際に改行コードとして保存するには?
例)field1='あああああああああああああ<BR>
いいいいいいいいいいいいいいい'
<BR>
部分をReplace関数を使用して、DBで設定されている文字コードに合わせて正しい改行コードに置換ください。
REPLACE(field名,'<BR>','\r\n')
##Q5. 半角カタカナを検知する
CASE WHEN field1 MATCHES '.*[ヲ-゚].*' THEN 'Y' ELSE 'N' END
- field1の値が「あああアアあ」 の場合 > Y
- field1の値が 「ああああアあ」 の場合 > N
##Q6. NULLの置換について
COALESCE関数もしくはCase文で可能です。
-
Case文の例:
CASE WHEN field1 is null then 'なし' ELSE field1 END
-
COALESCE関数の例:
COALESCE(field1, 'なし')
field1がNULLだった場合のみ2つ目の引数にセットされた値もしくは列(上記の例だと「なし」)がセットされる
#JSONの文字列操作
##Q1. JSONのBAG型データからネスト化された値を取得するには?
以下のような[]で複数の値をもつBAG型のデータをXplentyで扱う方法について紹介します。
[ { "key": "first_name", "value": "Taro", "label": "FIRST NAME" }, { "key": "last_name", "value": "Yamada", "label": "LAST NAME" }, { "key": "gender", "value": "Male", "label": "GENDER", "is_required": "required", "datatype": "text" } ]
BAG型のデータから必要な値だけを抽出する
ネスト化された値からパスを指定して取得するには、JsonExtractScalar関数を使用すると便利です。
FIRST NAMEを取得:JsonExtractScalar(field名,'$.[0].value’) > Taro
LAST NAMEを取得:JsonExtractScalar(field名,'$.[1].value’) > Yamada
GENDERを取得:JsonExtractScalar(field名,'$.[1].value’) > Male