... func( arg1[, arg2] ... ) ...
문자열 함수 func를 SQL 식 또는 Open SQL에서 식의 피연산자로 호출합니다. 함수의 인수 arg1, arg2, ...는 괄호 안에 쉼표로 구분된 목록으로 지정됩니다. 여는 괄호 뒤와 닫는 괄호 앞에 공백을 배치해야 합니다.
다음 표에는 SQL 표현식으로 지정할 수 있는 문자열 함수와 인수에 대한 요구 사항이 나와 있습니다. 함수의 의미는 문자열에 대한 SQL 함수에서 확인할 수 있습니다.
* 인자(Argument)인 expr, expr1, expr2 및 expr3은 SQL 표현식, 보다 구체적으로 개별 Column, 리터럴(Literal), SQL 함수, 호스트 변수(Host Variable) 또는 호스트 표현식(Host Expression)이 될 수 있습니다. 인자(Argument) 사용 가능한 데이터 유형은 사전 유형인 CHAR, CLNT, CUKY, DATS, LANG, NUMC, TIMS, UNIT 및 SSTRING입니다. 리터럴, 호스트 변수 및 호스트 표현식에 사용할 수 있는 데이터 유형은 위의 사전 유형에 할당된 ABAP 유형입니다. Result Type(결과 유형)도 사전 유형(Dictionary Type)입니다.
문자열 함수(String Function)의 인수(Argument)가 널 값(Null Value)인 경우 전체 문자열 함수의 결과는 널 값입니다.
문법 | 유효한 인수 유형 | 결과 유형 |
CONCAT( expr1, expr2) | expr1, expr2 : 상기 * 참조 |
인수의 타입이 SSTRING인 경우 SSTRING, 그렇지 않으면 결과의 길이가 포함된 CHAR입니다. |
CONCAT WITH SPACE ( expr1, expr2, spaces ) | expr : 상기 * 참조 sub : 공백: 리터럴 또는 상수 호스트 변수(ABAP 유형 b, s, i 또는 int8이 0보다 크고 1331보다 작음) |
인수의 타입이 SSTRING인 경우 SSTRING, 그렇지 않으면 결과의 길이가 포함된 CHAR입니다. |
INSTR( expr, len ) | expr : see below sub : sub: 리터럴 또는 상수 호스트 변수(ABAP 유형 c, n, d 또는 t 포함) |
INT4 |
LEFT (expr, lent ) | expr : 상기 * 참조 sub : 공백: 리터럴 또는 상수 호스트 변수(ABAP 유형 b, s, i 또는 int8이 0보다 크고 1331보다 작음) |
인수의 타입이 SSTRING인 경우 SSTRING, 그렇지 않으면 결과의 길이가 포함된 CHAR입니다. |
LENGTH (expr ) | 상기 * 참조 | INT4 |
LOWER ( expr ) | 상기 * 참조 | expr의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 expr의 길이가 있는 CHAR입니다. |
LPAD( expr, len, scr ) | len: 리터럴 또는 상수 호스트 변수(ABAP 유형 b, s, i 또는 int8이 0보다 크고 1333보다 작음) src: 리터럴 또는 상수 호스트 변수(ABAP 유형 c, d, t, n 또는 최대 1333자의 문자열)입니다. |
expr의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 길이가 len인 CHAR입니다. |
LTRIM ( expr, char ) | expr : 상기 * 참조 char: 리터럴 또는 상수 호스트 변수(길이가 1이고 ABAP 유형이 c 또는 n인 경우) |
expr의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 expr의 길이가 있는 CHAR입니다. |
LEPLACE( expr1, expr2, expr ) | 상기 * 참조 | 인수의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 결과의 가능한 최대 길이를 가진 CHAR입니다. |
RIGHT( expr, len ) | expr : 상기 * 참조 len: 리터럴 또는 상수 호스트 변수(ABAP 유형 b, s, i 또는 int8이 0보다 크고 1333보다 작음) |
인수의 타입이 SSTRING인 경우 SSTRING, 그렇지 않으면 결과의 길이가 포함된 CHAR입니다. |
RPAD( expr, len, scr ) | expr : 상기 * 참조 len: 리터럴 또는 상수 호스트 변수(ABAP 유형 b, s, i 또는 int8이 0보다 크고 1333보다 작음) src: 리터럴 또는 상수 호스트 변수(ABAP 유형 c, d, t, n 또는 최대 1333자의 문자열) |
expr의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 길이가 len인 CHAR입니다. |
RTRIM( expr, char ) | expr : 상기 * 참조 char: 리터럴 또는 상수 호스트 변수(길이가 1이고 ABAP 유형이 c 또는 n인 경우) |
expr의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 expr의 길이가 있는 CHAR입니다. |
SUBSTRING( expr, pos, len ) | pos : 리터럴, 호스트 변수 또는 ABAP 유형이 b, s, i 또는 int8인 호스트 식입니다. |
expr의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 길이가 len인 CHAR입니다. |
UPPER( expr ) | 상기 * 참조 | expr의 유형이 SSTRING인 경우 SSTRING, 그렇지 않으면 expr의 길이가 있는 CHAR입니다. |
CONCAT( arg1, arg2 )
CONCAT의 인자는 반드시 두 개가 와야하며, 세 개 이상이 오는 순간 Syntax Error을 발생시킵니다.
SQL Function | Result | CDS View | OPEN SQL |
CONCAT( arg1, arg2 ) | arg1과 arg2에서 문자 문자열의 연쇄. arg1, arg2 및 결과의 후행 공백은 무시됩니다. 결과의 최대 길이는 1333입니다. | 가능 | 가능 |
SELECT
CARRNAME,
URL,
CONCAT( CARRNAME, URL ) AS CONCAT
FROM SCARR
INTO TABLE @DATA(LT_DATA).
CONCAT_WITH_SPACE( arg1, arg2, spaces )
SQL Function | Result | CDS View | OPEN SQL |
CONCAT_WITH_SPACE( arg1, arg2, spaces ) | CONCAT과 마찬가지로 arg1과 arg2의 문자열을 연결합니다. 공백으로 지정된 공백 개수가 arg1과 arg2 사이에 삽입됩니다. 결과의 최대 길이는 1333입니다. | 가능 | 가능 |
SELECT
CARRNAME,
URL,
CONCAT_WITH_SPACE( CARRNAME, URL, 1 ) AS CONCAT
FROM SCARR
INTO TABLE @DATA(LT_DATA).
INSTR( arg, sub )
SQL Function | Result | CDS View | OPEN SQL |
INSTR( arg, sub ) | arg에서 sub에서 문자열의 첫 번째 발생 위치(대소문자 구분). arg는 선행 공백을 존중하고 후행 공백은 무시합니다. sub는 모든 공백을 존중합니다. sub에는 문자가 하나 이상 포함되어야 합니다. 공백이 발견되지 않으면 결과는 0입니다. | 가능 | 가능 |
arg에서 sub의 위치를 찾아서 있으면 해당 위치를 반환합니다.
SELECT
URL,
INSTR( URL, 'http' ) as INSTR1,
INSTR( URL, 'tt' ) as INSTR2,
INSTR( URL, 'tp' ) as INSTR3,
INSTR( URL, 'p' ) as INSTR
FROM SCARR
INTO TABLE @DATA(LT_DATA).
LEFT( arg, sub )
SQL Function | Result | CDS View | OPEN SQL |
LEFT( arg, sub ) | arg의 왼쪽 문자를 포함한 길이 len의 문자열입니다(후행 공백 무시). len의 값은 arg의 길이보다 클 수 없습니다. | 가능 | 가능 |
SELECT
URL,
LEFT( URL, 4 ) as LEFT1,
LEFT( URL, 7 ) as LEFT2,
LEFT( URL, 8 ) as LEFT3,
LEFT( URL, 10 ) as LEFT4
FROM SCARR
INTO TABLE @DATA(LT_DATA).
LENGTH( arg )
SQL Function | Result | CDS View | OPEN SQL |
LENGTH( arg ) | 후행 공백을 무시한 인수의 문자 수입니다. | 가능 | 가능 |
SELECT
CARRNAME,
LENGTH( CARRNAME ) as LENGTH1,
URL,
LENGTH( URL ) as LENGTH2
FROM SCARR
INTO TABLE @DATA(LT_DATA).
LOWER( arg )
SQL Function | Result | CDS View | OPEN SQL |
LOWER( arg ) | 모든 대문자와 소문자가 변환된 길이가 인수인 문자열입니다. | 가능 | 가능 |
SELECT
CARRNAME,
LOWER( CARRNAME ) as LOWER
FROM SCARR
INTO TABLE @DATA(LT_DATA).
LPAD( arg, len, src )
SQL Function | Result | CDS View | OPEN SQL |
LPAD( arg, len, scr ) | 후행 공백이 없고 확장된 문자열에 의해 생성된 선행 공백이 (모든 공백을 존중하여) 인자 src의 문자로 대체되는 인자의 오른쪽 정렬된 내용을 가진 길이 len의 문자열입니다. arg의 후행 공백은 보존됩니다. src에 존재하는 것보다 더 많은 문자가 필요한 경우, src의 내용이 반복적으로 사용됩니다. len이 arg의 길이보다 작으면 오른쪽에서 잘립니다. src가 비어 있고 len이 arg의 길이보다 크면 arg는 변경되지 않은 상태로 유지됩니다. | 가능 | 가능 |
*arg에는 필드, 문자 어떤 것이 올 수 있고 len는 해당 Function의 결과길이를 나타냅니다, SCR은 빈 공간을 어떻게 채울지를 결정하는 것으로 아래, LPAD_SAMPLE을 보면 쉽게 알 수 있습니다.
또한 LPAD와 LPAD1 필드를 보면 알 수 있듯이, len이 길어서, Scr + Arg의 합으로도 못채워지는 경우에는, Scr이 반복되는 것을 확인할 수 있습니다.
SELECT
LPAD( 'SAP', 10, 'A' ) AS LPAD_SAMPLE,
CARRID,
LPAD( CARRID, 12, 'CARRID IS ' ) AS LPAD,
LPAD( CARRID, 15, 'CARRID IS ' ) AS LPAD1,
URL,
LPAD( URL, 6, 'A' ) as LPAD2
FROM SCARR
INTO TABLE @DATA(LT_DATA).
LTRIM( arg, char )
SQL Function | Result | CDS View | OPEN SQL |
LTRIM( arg, char ) | 문자 내 문자와 일치하는 모든 후행 공백과 선행 문자가 제거된 인수의 내용이 포함된 문자열입니다. 문자 안의 공백은 중요합니다. | 가능 | 가능 |
arg에 오는 대상 필드으로부터 왼쪽에 'char'을 제거하는 함수입니다. CHAR은 한 자리가 와야하며, 필드 좌측의 공백을 지우고 싶으면 ' ', 처음으로 오는 특정 문자를 지우고 싶으면 'A' 혹은 'B' 등으로 함수를 구성하면 됩니다.
SELECT
CARRNAME,
LTRIM( CARRNAME, ' ' ) AS LTRIM_SIMPLE,
LTRIM( CARRNAME, 'A' ) AS LTRIM,
LTRIM( CARRNAME, 'B' ) AS LTRIM2,
LTRIM( URL, 'h' ) AS LTRIM3
FROM SCARR
INTO TABLE @DATA(LT_DATA).
REPLACE( arg1, arg2, arg3 )
SQL Function | Result | CDS View | OPEN SQL |
REPLACE( arg1, arg2, arg3 ) | 문자 문자열 arg1, arg2의 모든 인스턴스가 arg3의 콘텐츠로 대체됩니다. 문자 교체는 대소문자를 구분합니다. 모든 인자에서 후행 공백은 무시됩니다. 결과의 최대 길이는 1333입니다. | 가능 | 가능 |
SELECT
REPLACE( 'SAP SQL TEST', 'SQL', 'OPEN SQL' ) AS REPLACE1,
REPLACE( CARRNAME, 'American', 'USA' ) AS REPLACE2,
REPLACE( URL, 'http', ' ' ) AS REPLACE3
FROM SCARR
INTO TABLE @DATA(LT_DATA).
RIGHT( arg, len )
SQL Function | Result | CDS View | OPEN SQL |
RIGHT( arg, len ) | arg의 오른쪽 문자가 포함된 길이 len의 문자열입니다(후행 공백 무시). len의 값은 arg의 길이보다 클 수 없습니다.. | 가능 | 가능 |
SELECT
CARRNAME,
RIGHT( CARRNAME, 3 ) AS RIGHT,
URL,
RIGHT( URL, 10 ) AS RIGHT2
FROM SCARR
INTO TABLE @DATA(LT_DATA).
RPAD( arg, len, src )
SQL Function | Result |
CDS View | OPEN SQL |
RPAD( arg, len, src ) | 후행 공백이 없고 확장된 문자열에 의해 생성된 후행 공백이 (모든 공백을 존중하여) 인자 src의 문자로 대체되는 인자의 왼쪽 정렬된 내용을 가진 길이 len의 문자열입니다. arg의 후행 공백은 보존됩니다. src에 존재하는 것보다 더 많은 문자가 필요한 경우, src의 내용이 반복적으로 사용됩니다. len이 arg의 길이보다 작으면 오른쪽에서 잘립니다. src가 비어 있고 len이 arg의 길이보다 크면 arg는 변경되지 않은 상태로 유지됩니다. | 가능 | 가능 |
* LPAD와 다르게, RPAD 함수는 Arg 앞에 scr을 채우는 것에 아닌 Arg 뒤에 scr 내용을 채우는 것이라고 보면됩니다.
하기 예시를 상기의 LPAD와 구분해서 보면 됩니다.
SELECT
RPAD( 'SAP', 10, 'A' ) AS RPAD_SAMPLE,
CARRID,
RPAD( CARRID, 12, 'CARRID IS ' ) AS RPAD,
RPAD( CARRID, 15, 'CARRID IS ' ) AS RPAD1,
URL,
RPAD( URL, 6, 'A' ) as RPAD2
FROM SCARR
INTO TABLE @DATA(LT_DATA).
RTRIM( arg, char )
SQL Function | Result |
CDS View | OPEN SQL |
RTRIM( arg, char ) | 모든 후행 공백이 제거되고 문자 내 문자와 일치하는 모든 후행 문자가 있는 인수의 내용이 포함된 문자열입니다. 문자 안의 공백은 중요합니다. | 가능 | 가능 |
* LTRIM과 비교해서생각하면 됩니다. Arg의 후행 공백을 없애거나, 마지막에 오는 특정 문자에 대하여 제거 하기 위해서 사용합니다.
SELECT
URL,
RTRIM( URL, ' ' ) AS RTRIM1,
RTRIM( URL, 'm' ) AS RTRIM2
FROM SCARR
INTO TABLE @DATA(LT_DATA).
SUBSTRING( arg, pos, len )
SQL Function | Result |
CDS View | OPEN SQL |
SUBSTRING( arg, pos, len ) | 길이 len의 위치 pos에서 arg의 하위 문자열이 arg 내에 있도록 pos와 len을 지정해야 합니다. | 가능 | 가능 |
* Arg에 오는 대상 중에 어디서부터(pos) 몇 번 째 길이의 문자열을 가져올지를 정한다.
SELECT
URL,
SUBSTRING( URL, 1, 4 ) AS SUBSTRING1,
SUBSTRING( URL, 5, 10 ) AS SUBSTRING2
FROM SCARR
INTO TABLE @DATA(LT_DATA).
UPPER( arg )
SQL Function | Result |
CDS View | OPEN SQL |
UPPER( arg ) | 모든 소문자와 대문자가 변환된 길이의 인자 문자열입니다. | 가능 | 가능 |
SELECT
URL,
UPPER( URL ) AS UPPER
FROM SCARR
INTO TABLE @DATA(LT_DATA).
'ABAP 프로그래밍 개념 > OPEN SQL' 카테고리의 다른 글
CASE Function 2 : Complex Case (0) | 2023.09.03 |
---|---|
CASE Function 1 : Simple Case (0) | 2023.09.03 |
Numeric Function (0) | 2023.08.05 |
OPEN SQL의 사용 (0) | 2023.08.05 |
5. Processing Data from Databases via Internal Tables and Structures (1) | 2023.05.05 |