누구나 쉽게 SQL 6.2.2 문자형 함수 (SUBSTR, CONCAT, TRIM)
실무에서 많이 쓰이는 함수들 중 하나로 SUBSTR에 대한 정의,예시가 포함된 문자형 함수에 대해 누구나 쉽게 SQL 책에 나와 있는 내용을 정리해 보려고 한다. SUBSTR은 특정 컬럼의 값을 A 위치에서 시작해 B번째 자리까지 잘라서 반환하는 함수로 문자형 함수에서는 그나마 많이 활용 되는데, 나는 그동안 많이 활용을 못했던 함수 중 하나로 정리해 두고 나중에 필요할때마다 찾아서 적용해 보고 익혀서 나중에는 찾아보지 않아도 저절로 기억되어 사용할 수 있도록 해보려고 한다.
그리고 실무에서 시스템에 문제되었던 케이스 중 하나로 개발자분들이 말씀하셨던 함수가 있었는데 그 당시에는 어떤 함수인지 잘 몰랐는데 이 장에서 정의와 예시가 있어 알게 된 함수 중 하나가 있는데 그게 바로 CONCAT 함수다. || 연산자는 대략적으로 어떤 것인지 알고 있었는데 CONCAT 함수가 바로 || 연산자와 동일한 것이라고 하니 어떤 것인지 감이 딱! 왔음.ㅎㅎ 두 컬럼의 값을 연결(결합)하여 사용하기 좋은 함수인 것 같은데 한번도 안써봐서 다음에 실무에서 CONCAT 함수도 종종 써보도록 해야 겠다.
P.84
표6-3. 문자형 데이터를 반환하는 문자형 함수
CHR (n): n은 숫자로 n 값에 해당되는 문자를 반환
ex) SELECT CHR(76)||CHR(66)||CHR(67)
FROM DUAL;
→ ABC
INITCAP(char): char의 첫 번째 문자를 대문자로 변환
ex) SELECT INITCAT ('the')
FROM DUAL;
→ The
LOWER(char): char을 소문자로 변환
ex) SELECT LOWER ('THE')
FROM DUAL;
→ the
UPPER(char) : char을 대문자로 변환
ex) SELECT LOWER ('the')
FROM DUAL;
→ THE
CONCAT(char1,char2) : char1과 char2 문자를 결합한 결과를 반환, ||연산자와 같은 기능
ex) SELECT CONCAT ('A','B')
FROM DUAL;
→ AB
SUBSTR(char,n1,n2)
-char에서 n1위치에서 시작해 n2 길이만큼을 잘라낸 결과를 반환
-n1을 0으로 명시하면 1이 적용
-n1이 음수이면 char 오른쪽 끝에서부터 거꾸로 세어 가져옴
-n2를 생략하면 n1부터 끝까지 반환
-n2값을 1미만으로 지정하면 NULL을 반환
ex) SELECT SUBSTR('ABCDEFG',3,2)
FROM DUAL;
→ CD
SELECT SUBSTR('ABCDEFG',-3)
FROM DUAL;
→ EFG
LTRIM(expr1,exprt2): expr1의 왼쪽에서 expr2를 제거한 결과를 반환
ex) SELECT LTRIM ('**THE**,'*')
FROM DUAL;
→ THE**
RTRIM(expr1,expr2): expr1의 오른쪽에서 expr2를 제거한 결과를 반환
ex) SELECT RTRIM ('**THE**,'*')
FROM DUAL;
→ **THE
TRIM(char): char의 양쪽 끝 공백을 제거한 결과를 반환
ex) SELECT TRIM(' ABCD EFG ')
FROM DUAL;
→ ABCD EFG
LPAD(expr1,expr2): expr1을 반환하는데, expr2를 (n-expr1 길이) 만큼 왼쪽을 채워 반환
ex) SELECT LPAD ('THE',5,'*')
FROM DUAL;
→ **THE
RPAD(expr1,expr2): expr1을 반환하는데, expr2를 (n-expr1 길이) 만큼 오른쪽을 채워 반환
ex) SELECT RPAD ('THE',5,'*')
FROM DUAL;
→ THE**
표6-3에 나온 함수 중 특히 많이 사용하는 함수는 CONCAT, SUBSTR, TRIM 정도입니다. 특히 SUBSTR은 SQL 함수를 통틀어 가장 많이 사용하는 함수라고 해도 과언이 아닙니다. 그만큼 어떤 문자열에서 문자 일부를 잘라낸 결과를 사용하는 경우가 많습니다.
[SUBSTR 예시]
SUBSTR('ABCDEFG', 1, 3): 첫 번째 자리에서 세 글자를 잘라 반환하므로 'ABC'를 반환SUBSTR('ABCDEFG', 0, 3): 0은 1을 의미하므로 위와 같은 결과인 'ABC'를 반환SUBSTR('ABCDEFG', 1): n2를 생략해서 첫 번째 자리에서 전체를 반환하므로 'ABCDEFG'를 반환SUBSTR('ABCDEFG', -2): n1이 음수이므로 오른쪽 끝에서 두 번재 글자인 'F'에서 시작, 그런데 n2가 생략되어 'F'이후 오른쪽 나머지 글자를 가져오므로 'FG'를 반환
SUBSTR('ABCDEFG', -2, 1): n1이 -2이므로 오른쪽 끝 두 번째 자리인 'FG'를 반환하는데, n2가 1이므로 한 글자를 잘라 반환하므로 'F'를 반환
SUBSTR('ABCDEFG', -2, -1): n2가 음수이므로 n1에 상관없이 NULL을 반환
표6-4. 숫자형 데이터를 반환하는 문자형 함수
ASCII(char) : char 문자의 ASCII 코드 값을 반환. CHR 함수와 반대 기능을 함
ex) SELECT ASCII ('A')
FROM DUAL;
→ 65
INSTR(char1, char2, n1, n2)
- char1에서 char2 문자를 찾아 그 시작 위치를 반환함
- n1은 char1에서 몇 번째 문자부터 찾을 것인지를 나타내는 위치이며 생략 시 1이 적용됨
- n2는 char1에서 char2 문자를 찾을 때 일치하는 문자의 몇 번째 위치를 반환할지를 나타냄. 생략 시 1이 적용됨
ex) SELECT INSTR('ABABAB','A',2)
FROM DUAL;
→ 3
→N1은 2이고 N2가 생략되어 1이 적용되므로 첫 번째 문자열의 두 번째 문자(N1이 2)인 'B'에서 시작해 'A'를 만나는 첫 번째 위치(n2가 1)인 3을 반환
LENGTH(char) : char 문자의 글자 수를 반환함
ex) SELECT LENGTH('the')
FROM DUAL;
→ 3
출처: 누구나 쉽게 SQL, 홍형경