Continuous Challenge

[불친절한 SQL 프로그래밍][6장] 단일 행 함수 - 6.1 문자 함수 본문

Study/불친절한 SQL 프로그래밍

[불친절한 SQL 프로그래밍][6장] 단일 행 함수 - 6.1 문자 함수

응굥 2019. 11. 20. 17:42
728x90
728x90

p.78 ~

6.1 문자 함수

문자 함수(character function)는 문자 값을 조작하는 함수다.

 

CHR 함수

CHR 함수는 n에 해당하는 데이터베이스 캐릭터 셋의 문자 값을 반환한다. 문자로 입력할 수 없는 특수 문자를 입력할 때 사용할 수 있다. 

CHR(n)

CHR(10) 표현식은 줄 바꿈(Line Feed) 문자를 의미한다.

INITCAP 함수

INITCAP 함수는 char에 포함된 단어의 첫 글자는 대문자, 나머지는 소문자로 변경한다. 단어는 공백이나 숫자와 알파벳이 아닌 문자를 기준으로 구분된다.

INITCAP(char)

c2열은 쉼표(,)를 기준으로 단어가 구분된다.

 

LPAD 함수

LPAD 함수는 expr1의 길이를 좌측으로 n만큼 늘린 후, 늘어난 공간을 expr2로 반복해서 채운다. expr2의 기본값은 공백이다.

LPAD(expr1, n [, expr2])

c1열은 좌측 1자리가 공백으로 채워진다. c2열은 expr1이 n보다 크기 때문에 expr1이 n의 길이로 잘린다. c3열은 좌측 3자리가 12로 반복해서 채워진다.

 

RPAD 함수

RPAD 함수는 expr1의 길이를 우측으로 n만큼 늘린 후, 늘어난 공간을 expr2로 반복해서 채운다. expr2의 기본값은 공백이다.

RPAD(expr1, n [, expr2])

RAPD함수는 expr1이 널이면 널을 반환한다. LPAD함수도 마찬가지다.

 

LTRIM 함수

LTRIM 함수는 char의 좌측부터 set에 포함되지 않은 문자를 만날 때까지 set에 포함된 문자를 제거한다. char를 한 문자씩 set과 비교한다. set의 기본값은 공백(' ')이다.

LTRIM(char [, set])

c2열에서 set의 순서에 관계없이 문자가 제거되는 것을 확인할 수 있다. (A ∈ {B,C} -> B ∈ {B,C} -> C 는 {B,C}에 포함되지 않음) c3열은 비교 시 일치하는 문자가 없기 때문에 문자가 제거되지 않았다.

 

RTRIM 함수

RTRIM 함수는 char의 우측부터 set에 포함되지 않은 문자를 만날 때까지 set에 포함된 문자를 제거한다. char를 한 문자씩 set과 비교한다. set의 기본값은 공백(' ')이다.

RTRIM(char [, set])

단일 행 함수는 중첩하여 사용할 수 있다. 아래 쿼리는 RTRIM 함수와 LTRIM 함수를 중첩하여 문자열 양측의 숫자 값을 제거한다.

 

TRIM 함수

TRIM 함수는 trim_source의 좌측이나 우측이나 양측에서 trim_character가 아닌 문자를 만날 때까지 trim_character를 제거한다. 위치의 기본값은 BOTH다. trim_character은 한 문자만 지정할 수 있으며 기본값은 공백이다.

TRIM([{{LEADING | TRAILING | BOTH} [trim_character] | trim_character} FROM] trim_source)

TRIM 함수는 주로 c8열처럼 양측 공백을 제거하는 용도로 사용한다.

SUBSTR 함수

SUBSTR 함수는 char를 position 위치에서 우측으로 substring_length만큼 자른다. substring_length를 생략하면 끝까지 잘린다. position이 음수인 경우 뒤쪽에서 좌측으로 음수만큼 이동한 위치에서 우측으로 자른다. position이 char의 길이보다 크면 널을 반환한다. 

SUBSTR(char, position [, substring_length])

TRANSLATE 함수

TRANSLATE 함수는 expr의 문자를 from_string 문자와 대응되는 to_string 문자로 변환한다. 

from_string 문자와 일치하지 않는 문자는 변환하지 않는다.

TRANSLATE(expr, from_string, to_string)

c1열의 B는 널, c2열의 B는 공란과 대응된다. c3열의 Z는 일치하는 문자가 없으므로 무시된다.

TRANSLATE 함수를 사용하면 특정 값을 제거하거나 추출할 수 있다. 

c1열은 숫자 값을 제거하고, c2 열은 숫자 값을 추출한다.

 

INSTR 함수

INSTR 함수는 string의 position에서 우측으로 occurrence번째 substring의 시작 위치를 반환한다. position과 occurrence의 기본값은 1이다.

INSTR(string, substring [, position [, occurrence]])

c2열처럼 substring을 찾을 수 없거나 c3열처럼 position이 string의 길이보다 긴 경우 0을 반환한다. c6,c7열처럼 position이 음수인 경우 position에서 좌측으로 position을 검색한다.

 

728x90
728x90
Comments