문자 함수
1. CONCAT(문자열1, 문자열2)
: 문자열1과 문자열2를 결합
SELECT CONCAT(문자열1, 문자열2) FROM [테이블명];
-- emp 테이블에서 ename(job) 형태로 만들어 출력
SELECT CONCAT(ename, '(', job, ')') AS 'ename_job' FROM emp;
-- SMITH's sla is $sal 형태로 만들어 출력
-- 문자열은 작은 따옴표를 이용하기 때문에 '를 출력하기 위해서는 ''로 작성해야 출력됨
SELECT CONCAT(ename,'''s sal is $',sal) FROM emp;
2. INSERT(기준 문자열, 시작위치, 변경 문자 길이, 변경할 문자)
: 문자열의 일부를 변경
SELECT INSERT(문자열, 시작 위치, 변경 문자열 길이, 변경할 문자) FROM [테이블명];
-- naver를 kosta로 변경
SELECT INSERT('http://naver.com', 8, 5, 'kosta');
-- student 테이블에서 주민번호 뒤 7자리를 *로 변경
SELECT studno, name, INSERT(jumin, 7, 7, '*******') 주민번호, grade 학년 FROM student;
-- gogak 테이블의 고객번호와 이름 조회(단, 이름은 가운데 글자를 *로 변경)
SELECT gno 고객번호, INSERT(gname, 2, 1, '*') 이름 FROM gogak;
3. INSTR(문자열, 찾는 특정 문자)
: 문자열 내에서 찾는 특정 문자의 위치(숫자)를 반환
SELECT INSTR(문자열, 특정 문자) FROM [테이블명];
-- 문자열에서 n이 위치한 위치 출력
SELECT INSTR('http://naver.com', 'n');
-- student 테이블의 tel에서 )의 위치 구하기
SELECT INSTR(tel, ')') FROM student;
4. SUBSTR(문자열, 시작 위치) , SUBSTR(문자열, 시작위치, 출력 문자열 길이), SUBSTRING(문자열, 시작위치, 출력 문자열 길이)
: 문자열에서 시작 위치를 기준으로 문자열 반환 (출력 문자열의 길이가 정해져 있지 않으면 끝까지 출력)
: 문자열의 비교이기 때문에 따옴표를 쓰지 않아도 문자로 인식하여 자동 형변환 진행
SELECT SUBSTR(문자열, 시작 위치, 출력 문자열 길이) FROM [테이블명];
SELECT SUBSTR(문자열, 시작 위치) FROM [테이블명];
SELECT SUBSTRING(문자열, 시작 위치, 출력 문자열 길이) FROM [테이블명];
SELECT SUBSTRING(문자열, 시작 위치) FROM [테이블명];
-- 8번째부터 5개 가져오기
SELECT SUBSTR('http://naver.com', 8, 5);
-- 8번째부터 맨 뒤까지 가져오기
SELECT SUBSTR('http://naver.com', 8);
-- student 테이블에서 tel의 )를 이용하여 지역번호 출력하기
SELECT SUBSTR(tel, 1, INSTR(tel, ')')-1) 지역번호 FROM student;
-- student 테이블에서 주민번호 생년월일이 9월인 학생 조회
SELECT * FROM student WHERE SUBSTR(jumin, 3, 2)='09';
-- 숫자 앞에는 0이 올 수 없기 때문에 09를 문자로 인식하여 자동으로 형변환을 해줌
-- 9를 쓸 경우에는 SUBSTR을 숫자로 변환해주어서 비교해주기 때문에 오류가 나지 않음
SELECT * FROM student WHERE SUBSTR(jumin, 3, 2)=09;
-- student 테이블에서 tel의 가운데 자리 숫자 조회
SELECT SUBSTR(tel, INSTR(tel, ')')+1, (INSTR(tel, '-')-INSTR(tel, ')'))-1) 가운데번호 FROM student;
5. LENGTH(문자열)
: 공백을 포함해 문자열의 길이(바이트 수)를 반환
: 영어는 한 글자 당 1byte, 한글은 한 글자 당 3byte
: 출력하고자 하는 문자열, 칼럼명에 바로 사용 가능
SELECT LENGTH('칼럼명') FROM [테이블명];
-- length : 문자열의 바이트 길이 구하기 (영문 한 글자 : 1byte, 한글 한 글자 : 3byte)
SELECT email, LENGTH(tel) FROM student;
-- professor 테이블의 이메일에서 @ 뒤의 문자열의 길이를 구하기
SELECT LENGTH(email) FROM professor;
SELECT email, INSTR(email, '@') FROM professor;
SELECT email, LENGTH(SUBSTR(email, INSTR(email, '@')+1)) '@ 뒤 길이' FROM professor;
-- @뒤의 메일 형식을 kost.com으로 변환
SELECT email, INSERT(email, INSTR(email, '@')+1, LENGTH(SUBSTR(email, INSTR(email, '@')+1)), 'kosta.com') 변환메일 FROM professor;
-- 이름의 바이트 길이 출력 (영문과 한글의 문자열 길이가 다름) 문자열의 길이가 아닌 Byte 수, 한글은 한 글자에 3Byte
SELECT ename, LENGTH(ename) FROM emp;
SELECT name, LENGTH(name) FROM student;
6. CHAR_LENGTH(문자열)
: 문자열의 글자수를 반환
SELECT CHAR_LENGTH(칼럼명) FROM [테이블명];
-- 이름의 길이(바이트 길이 아님) 출력
SELECT ename, CHAR_LENGTH(ename) FROM emp;
SELECT name, CHAR_LENGTH(name) FROM student;
7. LOWER(문자열), LCASE(문자열)
: 영문자를 소문자로 변환
SELECT LOWER(칼럼명) FROM [테이블명];
SELECT LCASE(칼럼명) FROM [테이블명];
-- emp 테이블의 ename을 소문자로 변환
SELECT ename, LOWER(ename) FROM emp;
SELECT ename, LCASE(ename) FROM emp;
8. UPPER(문자열), UCASE(문자열)
: 영문자를 대문자로 변환
SELECT UPPER(칼럼명) FROM [테이블명];
SELECT UCASE(칼럼명) FROM [테이블명];
9. TRIM(문자열, 지정된 문자) / RTRIM(문자열, 지정된 문자) / LTRIM(문자열, 지정된 문자)
: 왼쪽 및 오른쪽 / 오른쪽 / 왼쪽에서 지정된 문자를 삭제
: 지정된 문자가 주어지지 않은 경우 공백 삭제
SELECT TRIM(칼럼명) FROM [테이블명];
-- trim : 앞 뒤 공백 제거
SELECT LENGTH('test. '), LENGTH(TRIM(' .test '));
SELECT LENGTH('t e s t'), LENGTH(TRIM('t e s t'));
---------------------------------------
-- ltrim : 왼쪽 공백 제거
SELECT LENGTH(' test '), LENGTH(LTRIM(' test '));
---------------------------------------
-- rtrim : 오른쪽 공백 제거
SELECT LENGTH(' test '), LENGTH(RTRIM(' test '));
10. LPAD(문자열, 길이, 채울 문자), RPAD(문자열, 길이, 채울 문자)
: 문자열의 왼쪽/오른쪽을 특정 문자로 채워 넣고 반환
SELECT LPAD(칼럼명, 채울 문자) FROM [테이블명];
SELECT RPAD(칼럼명, 채울 문자) FROM [테이블명];
-- lpad(칼럼명, 길이, 왼쪽에 채울 문자) : 왼쪽을 특정 문자로 채워넣기 (문자가 여러개면 남는 자리만큼 해당 문자를 채워넣음)
SELECT sal, lpad(ename, 20, ' ') 이름 FROM emp;
SELECT sal, lpad(ename, 20, '8') 이름 FROM emp;
SELECT LPAD(email, 20, '123456789') FROM professor;
-- rpad(칼럼명, 길이, 오른쪽에 채울 문자) : 오른쪽을 특정 문자로 채워넣기
SELECT sal, rpad(ename, 20, ' ') 이름 FROM emp;
SELECT sal, rpad(ename, 20, '8') 이름 FROM emp;
'공부 자료 > DataBase' 카테고리의 다른 글
[SQL] 날짜 함수 (0) | 2023.09.05 |
---|---|
[SQL] 숫자 함수 (0) | 2023.09.05 |
[SQL] WHERE 및 WHERE 연산자 (0) | 2023.09.05 |
[SQL] SELECT 및 SELECT 관련 쿼리 (1) | 2023.09.05 |
[SQL] CASE문 CASE WHEN THEN END (0) | 2023.09.05 |