- CONCAT(c1, c2)
- || 과 똑같이 동작한다.
- 문자열 c1과 문자열 c2를 결합해주는 함수이다.
- c1과 c2사이에 문자를 넣어주고 싶으면 2중으로 사용을 해줘야 하는 불편함이 있다.
-
SELECT CONCAT('HELLO', 'SQL') FROM DUAL; //출력 : HELLOSQL SELECT 'HELLO'||' '||'SQL' FROM DUAL; //출력 : HELLO SQL
- 위와같이 CONCAT의 경우 문자열을 결합할 때 문자열 사이에 문자를 넣어줄 수 없다는 단점이 있다.
- 하지만 ||의 경우 문자열 사이에 문자로 연결자를 넣어주기 편함으로 CONCAT대신 ||를 추천한다.
- LOWER(c1), UPPER(c1), INITCAP(c1)
- LOWER : c1에 저장된 자료를 모두 소문자로 변환
- UPPER : c1에 저장된 자료를 모두 대문자로 변환
- INITCAP : c1에 저장된 자료중 단어의 첫 글자만 대문자로 변환
- 변환 시 단어의 첫 글자 확인은 공백을 구분자로 한 칸 이상의 공백이 있으면 공백 다음 단어가 첫 글자
-
SELECT LOWER('HELLO') FROM DUAL; //출력 : hello SELECT UPPER('hello') FROM DUAL; //출력 : HELLO SELECT INITCAP('HELLO SQL HELLOSQL hello sql hellosql') FROM DUAL; //출력 : Hello Sql Hellosql Hello Sql Hellosql
- LPAD(c1, n [, c2]), RPAD(c1, n[,c2])
- LPAD : n의 길이만큼 기억공간에 왼쪽부터 c1을 채우고 남는 공간은 c2를 채움
- RPAD : n의 길이만큼 기억공간에 오른쪽부터 c1을 채우고 남는 공간은 c2를 채움
-
SELECT LPAD('1234567', 10, '*') FROM DUAL; //출력 : ***1234567 SELECT RPAD('1234567', 10, '*') FROM DUAL; //출력 : 1234567***
- 10의 길이를 만들어주고 처음 주어진 문자열을 L의 경우에는 오른쪽에 붙이고 남은 공간을 *로, R의 경우에는 왼쪽에 붙히고 남은 공간을 *로 채워준다
- LTRIM(c1 [,2]), RTRIM(c1 [,2]), TRIM(c1)
- c1의 우측(RTRIM)또는 좌측(LTRIM)에서 첫 번째로 만나는 문자열이 c2와 같으면 삭제
- c2가 삭제되면 공백은 제거된다.
- TRIM : c1양쪽의 무효 공백 제거
- 무효 공백 : 데이터 사이의 공백이 아닌 데이터가 나오기 전과 나온 후의 공백
- 유효 공백 : 데이터 사이의 공백. 유효 공백은 아스키코드값으로도 나와있다(40)
- 유효공백은 LTRIM, RTRIM, TRIM으로는 제거가 불가능하고 REPLACE로 삭제가 가능하다
-
SELECT LTRIM('APPLE', 'AP') FROM DUAL; //출력 : LE SELECT LTRIM(' APPLE') FROM DUAL; //출력 : APPLE SELECT RTRIM('APPLE', 'LE') FROM DUAL; //출력 : APP SELECT RTRIM('APPLE ') FROM DUAL; //출력 : APPLE SELECT TRIM(' APPLE BANANA ORANGE STRAWBERRY ') FROM DUAL; //출력 : APPLE BANANA ORANGE STRAWBERRY
- c2를 생략한 경우 공백이 삭제된 것을 볼 수 있고 TRIM의 경우 양쪽 공백만 삭제된 것을 확인할 수 있다
- SUBSTR(c1, n1 [, n2])
- 주어진 문자열 c1의 n1번째 인덱스부터 시작해서 n2의 개수만큼 글자를 부분 문자열로 추출하여 반환한다
- n2가 생략되면 n1번째 인덱스부터 나머지 글자를 모두 추출하여 반환한다.
- n1의 시작 인덱스는 1이며 0을 입력해도 1과 같이 동작한다
- n1이 음수이면 제일 오른쪽 자리부터 처리된다
- n2가 글자보다 많으면 c1이 가지고 있는 문자만큼만 출력한다
-
SELECT SUBSTR('무궁화 꽃이 피었습니다.', 1) FROM DUAL; //출력 : 무궁화 꽃이 피었습니다. SELECT SUBSTR('무궁화 꽃이 피었습니다.', 0, 3) FROM DUAL; //출력 : 무궁화 SELECT SUBSTR('무궁화 꽃이 피었습니다.', 1, 3) FROM DUAL; //출력 : 무궁화 SELECT SUBSTR('무궁화 꽃이 피었습니다.', 1, 50) FROM DUAL; //출력 : 무궁화 꽃이 피었습니다. SELECT SUBSTR('무궁화 꽃이 피었습니다.', -5, 10) FROM DUAL; //출력 : 었습니다.
- 0과 1이 동일하게 동작하며, c2를 삭제하거나 문자열의 길이보다 큰 값을 입력하면 끝까지 출력되고, 마이너스 인덱스를 입력하면 오른쪽부터 숫자를 세서 출력을 해준다.
- REPLACE(c1, c2 [, c3])
- 주어진 문자열 c1에서 c2를 찾아 c3로 치환한다
- c3가 생략되면 c2를 삭제한다
- c3를 생략하고 c2에 공백을 넣으면 c1안에 모든 공백을 삭제한다.
-
SELECT REPLACE('무궁화 꽃이 피었습니다.', '무궁화', '진달래') FROM DUAL; //출력 : 진달래 꽃이 피었습니다. SELECT REPLACE('무궁화 꽃이 피었습니다.', '무궁화') FROM DUAL; //출력 : 꽃이 피었습니다. SELECT REPLACE(' 무궁화 꽃이 피었습니다. ', ' ') FROM DUAL; //출력 : 무궁화꽃이피었습니다.
- 두 번째 예제의 경우 공백은 선택이 되지 않았으므로 삭제되지 않고 앞에 남아있는 걸 볼 수 있고 세 번째 출력문의 경우 모든 유효 공백과 무효 공백이 사라진다
- INSTR(c1, c2 [, m [, n]]) / INDEX OF STRING
- 주어진 문자열 c1에서 문자열 c2가 처음 나타난 위치를 반환
- m : 검색의 시작 위치를 지정
- n : 문자열 c1에서 찾으려는 문자열 c2가 n번째로 나오는 위치를 반환
- 없는 경우 NULL이 아닌 0을 리턴
-
SELECT INSTR('APPLE BANANA ORANGE STRAWBERRY', 'E') FROM DUAL; // 출력 : 5 SELECT INSTR('APPLE BANANA ORANGE STRAWBERRY', 'E', 6) FROM DUAL; // 출력 : 19 SELECT INSTR('APPLE BANANA ORANGE STRAWBERRY', 'E', 6, 2) FROM DUAL; // 출력 : 27
- 'APPLE BANANA ORANGE STRAWBERRY'라는 문자열에서 첫 번째로 나온 E의 위치 5를 반환
- 위의 문자열에서 6번째 인덱스 이후로 처음 나오는 E의 위치 19를 반환
- 위의 문자열에서 6번째 인덱스 이후로 2번째로 나오는 E의 위치 27을 반환
'DataBase > Oracle' 카테고리의 다른 글
10. Function - 날짜 함수 (0) | 2021.07.24 |
---|---|
9. Function - 숫자 함수 (0) | 2021.06.22 |
7. 연산자(Operator) (0) | 2021.06.18 |
7. 자료형(Data type) (0) | 2021.06.17 |
6. Selec (0) | 2021.06.14 |