단일행함수 : 문자함수
SQL함수에는 두가지 유형이 있다.
단일행함수종류
단일행함수는 총 5가지이다.
문자함수
문자함수는 크게 변환함수와 문자 조작 함수로 나누어진다.
대소문자 변환함수
변환함수는 총 3가지가 있다.
대소문자를 변환한다.
기능 | 결과 |
---|---|
LOWER(‘SQL Course’) | sql course |
UPPER(‘SQL Course’) | SQL COURSE |
INITCAP(‘SQL Course’) | Sql Course |
1 | $ select_id, last_name |
문자조작함수
concat(expr1, expr2)
concat은 인수를 2개밖에 못 받는다.
만약 2개초과로 쓰고싶다면 concat을 중첩해서 사용해야한다.
예를 들어 last_name과 first_name을 합쳐서 full_name을 만들고싶다
concat이용한 구문과 연결연산자 이용한 구문의 출력값은 같다.
차이점은 concatl은 인수2개만 가능하고 연결연산자는 원하는만큼의 인수를 사용할 수 있다
1 | //concat이용한 구문 |
이때 last_name과 first_name 사이에 공백 한칸을 넣고싶다
그래서 처음에는 아래 코드를 작성했다.
1 | $ select concat(last_name, ' ', first_name) as full_name |
위 코드처럼 했더니 invalid number of arguments
에러가 떴다.
즉, concat은 인수를 2개밖에 못 받기때문에 3개를 쓰려면 중첩
해야한다.
1 | //concat 중첩하기 |
substr(expr1, expr2, expr3)
문자열의 일부분을 반환해주는 함수이다.
- expr1 : 반환할 문자열
- expr2 : 시작위치
- 음수인 경우 뒤에서 시작위치 ex)-1이면 뒤에서 첫번째글자
- expr3 : 반환할 문자갯수
- 방향은 항상 왼쪽에서 오른쪽으로 문자갯수만큼 반환한다
- 생략가능 : 생략되면 시작위치에서 끝까지 반환
주로 주민번호(770123-2123456)를 반환할때 사용한다.
1 | $ select substr(770123-2123456, 1, 6) |
instr(expr1, expr2)
문자열(expr1)로 부터 특정 문자(expr2)의 첫번째 위치값을 반환해주는 함수이다.
아래 문자열에는 o가 2개가 있다. 5번째와 7번째에 있는데 어느 값을 반환해줄까?
instr는 첫번째 위치값만 반환해준다.
1 | $ select isnt('HelloWorld', 'o') |
lpad(expr1, expr2, expr3) 와 rpad(expr1, expr2, expr3)
오른쪽 정렬/왼쪽 정렬 해주는 함수
- expr1 : 반환할 문자열
- expr2 : 전체자리수
- expr3 : 남는 공간을 채울 문자
- 공백을 주면 오른쪽/왼쪽정렬을 표현할 수 있어 유용하다.
1 | //lpad 오른쪽정렬 |
trim(expr1 from expr2)
문자열(expr2)로부터 특정 문자(expr1)가 접두어나 접미어에 있다면 삭제(절단)해주는 함수이다.
(ex1) trim(‘H’ from ‘HHelloHWHorldHHH’) => elloHWHorld
한자리 숫자를 출력하려고 할때 01,02,03 등등으로 출력된다.
이때 0을 빼고 한자리만 출력할때 주로 사용한다.
length(expr1)
문자열의 길이를 반환해주는 함수이다.
1 | $ select length('HelloWorld') |
replace(expr1, expr2, expr3)
문자열(expr1)로 부터 특정 문자(expr2)를 다른 문자(expr3)로 교체해주는 함수이다.
DB에 폰번호가 .로 저장되어있을때 우리가 보기 편하게 -로 바꿔줄수있다.
1 | //기존데이터 : 010.1234.5678 |