> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: 초급 Part03 : Xplenty에서 자주 수행되는 문자열 조작

> Integrate.io ETL에서 자주 수행되는 문자열 분할, 공백 제거, 결합, 치환 등 일반적인 문자열 변환 처리를 STRSPLIT, REGEX_EXTRACT 같은 함수의 실제 사용 예제와 함께 자세히 설명합니다. 화면 캡처와 함께 단계별로 정리했습니다.

이 가이드에서는 Xplenty에서 자주 수행되는 문자열 변환 처리에 대해 설명합니다.
※1 이후에도 새로운 케이스가 있으면, 이 가이드에 수시로 추가해 갈 예정입니다.
※2 일본어 페이지의 번역이므로 **한국 사용자 환경에 맞지 않는 예가 있음**을 감안하고 읽으시기 바랍니다.
**자주 사용되는 문자열 조작**

## **Q1. 성명을 성(Last Name)과 이름(First Name)으로 나누는 방법?**

**STRSPLIT** 함수를 사용하면 구분 기호를 지정하고 문자열을 분할하여 검색할 수 있습니다.

field1='대한민국 만세'
STRSPLIT(field1,' ').$0 	==> 대한민국
STRSPLIT(field1,' ').$1
\==> 만세

## **Q2. 값이 한글인 경우에만 취득하는 방법?**

**REGEX\_EXTRACT** 함수를 사용하면 정규식을 사용하여 한글을 포함하는 문자열을 검색할 수 있습니다.

field1='한글 문자열'
REGEX\_EXTRACT(field1,'\[가-힣 ]+',0)

예: field1: 한글 문자열
\==> 한글 문자열
예: field1: abcd123
\==> 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. 개행 코드의 치환**

웹 애플리케이션 데이터 등에 포함된 개행 코드를 DB에 저장할 때 개행 코드로 저장하는 방법?

# \<BR>부분을 Replace함수를 사용하여 DB에 설정된 문자 코드에 맞는 올바른 줄 바꿈 코드로 바꿉니다.

field1='당신을 사랑합니다.\<BR>그리고, 당신을 미워합니다.'
REPLACE(field1,'\<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 인 경우에만 두 번째 인수에 설정된 값 또는 열 (위의 예이면 "미설정")이 설정됩니다.

**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\_name,'$.[0].value’)   ==> Taro
LAST NAME 가져오기:  JsonExtractScalar(field_name,'$.\[1].value’)   ==> Yamada
GENDER 가져오기:     JsonExtractScalar(field\_name,'\$.\[1].value’)   ==> Male
**고정 길이 문자열을 필드별로 분할하는 방법?**

Select 컴포넌트로 다음과 같이 설정할 수 있습니다.
식: Substring(필드, 시작위치, 종료위치)
사용예:

`SUBSTRING('aaaaa00000아아아아아11111',0,5)    ==> 'aaaaa'`
`SUBSTRING('aaaaa00000아아아아아11111',5,10)   ==>  '00000'`
`SUBSTRING('aaaaa00000아아아아아11111',10,15)  ==>  '아아아아아'`

**고정 길이 문자열을 생성하는 방법?**

Select 컴포넌트로 다음과 같이 설정할 수 있습니다.
식: SPRINTF('%08d',수치)

수식
결과
설명

SPRINTF('%08d',1)
'00000001'
8자리 (왼쪽을 자리수 분 0으로 채운다)

SPRINTF('%05d',10)
'00010'
5자리 (왼쪽을 자리수 분 0으로 채운다)

SPRINTF('%5s','아')
'\_\_\_\_아'
5자리(왼쪽을 자리수 분 반각 스페이스로 채운다)

SPRINTF('%-10s','아')
'아\_\_\_\_\_\_\_\_\_'
10자리(오른쪽을 자리수 분 반각 스페이스로 채운다)

예외 : "1" → "10000"와 같이 **오른쪽에 0을 추가 할 수 없습니다**. 숫자를 자릿수에 따라 10,100,1000 등을 곱하는 배수 처리가 필요합니다.
또한 예상 자릿수를 넘어가는 데이터가 들어오는 경우 CASE 문과 Length 함수, SUBSTRING 함수를 사용하여 초과 문자열을 잘라낼 수 있습니다.

\*\*5자리를 초과하는 경우의 제어 예:
\*\*

CASE
    WHEN Length(field1) > 5 THEN SPRINTF('%-5s'(SUBSTRING(field1,0,5))
    ELSE SPRINTF('%-5s',field1)
END

\*\* \*\*

\<!-- notionvc: b3a487f8-4c65-4ffa-ae04-e51e67bf09df -->

##

\<!-- Google Tag Manager hidden fields -->

\<!-- End Google Tag Manager hidden fields -->

\<!-- Text input-->

Get Started

Free 7-day trial. Easy setup. Cancel any time
