본문 바로가기

ABAP 프로그래밍 개념/OPEN SQL

String Function

... 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).

 

반응형