2022. 7. 14. 18:19ㆍ코딩/DataBase
LIKE - 입력한 것이랑 같은거 출력
NOT LIKE - 입력한 것이랑 같은거 제외하고 출력
% - 글자수 제한없이 대체
_ - 한글자 대체
ESCAPE
OR , IN -
LENGTH - 문자길이 반환
LENGTHB - 문자열BYTE 반환 *주의점 한글은 문자 하나당 3BYTE 취급
INSTR - 찾는 문자열이 지정한 위치부터 지정한 횟수에 나타난 위치 반환
LPAD / RPAD - 주어진 컬럼 문자열에 임의의 문자열을 왼쪽/오른쪽에 덧붙임
LTRIM/RTRIM - 주어진 컬럼이나 문자열의 왼쪽 또는 오른쪽에서 지정한 문자열에 포함된 모든 문자를 제거한 나머지 반환
SUBSTR - 컬럼이나 문자열에서 지정한 위치부터 지정한 개수의 문자열을 잘라내어 리턴
SELECT 와 FROM 사이에 *입력시
EMPLOYEE 테이블의 모든 데이터 출력
select * from employee;
SELECT 와 FROM 사이에 원하는 컬럼 입력시 FROM 뒷쪽 테이블의
해당 컬럼만 출력
select emp_name from employee;
LIKE
SELECT
EMP_NAME,SALARY
FROM EMPLOYEE
WHERE EMP_NAME LIKE '전__';
SELECT
EMP_NAME,SALARY
FROM EMPLOYEE
WHERE EMP_NAME LIKE '전%';
LIKE와 _ 를 사용하여 전 으로시작하고 뒤에 두글자는 관련없는 데이터를 출력
LIKE 와 %를 사용해도 된다.
ESCAPE
이메일에서 언더바(_)의 앞이 3글자인 직원을 조회하고 싶다.
그런데 _ 를사용하면 한글자를 대체하는것으로 인식이된다.
이를 방지하기 위해 ESCAPE를 사용한다.
인지하고싶은 언더바 앞에 #을 붙이고 ESCAPE'#'를 적어주면 #앞쪽 _는 글자 대채로 인식되고
#뒷쪽 _는 언더바로 인식이 될것이다.
SELECT
EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___#_%'ESCAPE'#';
F5 파일 전체실행
ctrl+enter 커서가 있는 한줄 실행
NOTLIKE
--2. EMPLOYEE테이블에서 전화번호 첫 3자리가 010이 아닌 직원의 이름 전화번호출력
SELECT
EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE NOT LIKE '010%';
OR , IN
--EMPLOYEE 테이블에서 이름, 부서코드
--부서코드(DEPT_CODE)가 D9또는 D6또는 D8인 직원
SELECT EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE
--DEPT_CODE ='D9' OR DEPT_CODE ='D6' OR DEPT_CODE ='D8'; 아래코드랑 같음
DEPT_CODE IN ('D9','D6','D8');
LENGTH
-- LENGTH : 문자열의 길이 반환
SELECT
EMP_NAME,LENGTH(EMP_NAME),
EMAIL, LENGTH(EMAIL)
FROM EMPLOYEE;
LENGTHB
--LENTHB : 문자열BYTE 반환
--한글은 한글자당 3BYTE로 인식이 된다.
SELECT
EMP_NAME,LENGTHB(EMP_NAME),
EMAIL, LENGTHB(EMAIL)
FROM EMPLOYEE;
INSTR
--INSTR : 찾는 문자열이 지정한 위치부터 지정한 횟수에 나타난 위치 반환
EX1)
SELECT 'Hello World Hi High' FROM DUAL;
SELECT INSTR('Hello World Hi High','H',1,1) FROM DUAL;
SELECT INSTR('Hello World Hi High','H',1,2) FROM DUAL;
--두번째 H가있는곳까지
SELECT INSTR('Hello World Hi High','H',1,3) FROM DUAL;
--세번째 까지
SELECT INSTR('Hello World Hi High','H',2,1) FROM DUAL;
--2번째 문자부터 출발
SELECT INSTR('Hello World Hi High','H',-1,1) FROM DUAL;
--음수가 붙으면 뒤에서부터 앞으로 찾아간다
--DUAL 은 테스트를 위한 테이블
각 줄의 실행 결과
EX2)
--이메일 중에서 @를 첫 문자부터찾기 시작해서 @만날때까지 찾는다
SELECT EMP_NAME,
INSTR(EMAIL,'@',1,1)
FROM EMPLOYEE;
LPAD / RPAD
--LPAD/RPAD : 주어진 컬럼 문자열에 임의의 문자열을 왼쪽/오른쪽에 덧붙임
SELECT
EMAIL,LENGTH(EMAIL),
LPAD(EMAIL,20,'#'),
RPAD(EMAIL,20,'#')
FROM EMPLOYEE;
--메일이 14짜리 라면 6개만큼 왼쪽에 #을 덧붙임 15짜리라면 5개
--LPAD는 왼쪽에 채워넣고 RPAD는 오른쪽에 채워넣음
--주의점 LPAD(EMAIL,10,'#')라고 적으면 공간이 모자르면 그만큼 잘라낸다
LTRIM/RTRIM
--LTRIM/RTRIM : 주어진 컬럼이나 문자열의 왼쪽 또는
--오른쪽에서 지정한 문자열에 포함된 모든 문자를 제거한 나머지 반환
TRIM
-왼쪽 오른쪽 가리지 않고 주어진 컬럼이나 문자열에 있는 지정문자를 제거한뒤 반환
SELECT '000KH000' FROM DUAL;
SELECT LTRIM('000KH000','0') FROM DUAL;
--왼쪽 0 3개만 삭제
SELECT LTRIM('12322123123KH000','123') FROM DUAL;
--숫자를 한덩이로 보는게 아니라 하나씩 쪼개서 보고 해당하는것들을 지운다
--('12322123123KH000','123')라고 하면 1,2,3에 해당하는것을 다지우고 K를 만나는 순간 끝
--RTRIM도 같은 메커니즘 다만 오른쪽부터 시작
-- TRIM : 왼쪽 오른쪽 가리지 않고 주어진컬럼이나
--문자열에 있는 지정한 문자를 제거한 나머지 반환
SELECT '000KH000' FROM DUAL;
SELECT TRIM('0' FROM '000KH000') FROM DUAL;
--위 아래 같은코드
SELECT TRIM(BOTH'0' FROM '000KH000') FROM DUAL;
SELECT TRIM(LEADING'0' FROM '000KH000') FROM DUAL;
--앞쪽만 삭제
SELECT TRIM(TRAILING'0' FROM '000KH000') FROM DUAL;
--뒤쪽만 삭제
위코드들 실행결과들
SUBSTR
--SUBSTR : 컬럼이나 문자열에서 지정한 위치부터 지정한 개수의 문자열을 잘라내어 리턴
SELECT 'SHOW ME THE MONEY' FROM DUAL;
SELECT SUBSTR('SHOW ME THE MONEY',6,2) FROM DUAL;
--문자열중에 6번째부터 2개를 잘라오라는 뜻 6번째는 M이기때문에 ME가 출력
SELECT SUBSTR('SHOW ME THE MONEY',9,3) FROM DUAL;
--위랑 같은이유로 THE출력
SELECT SUBSTR('SHOW ME THE MONEY',9) FROM DUAL;
--제약을 하나만 주면 앞의제약 번째부터 끝까지 다 나옴
SELECT SUBSTR('SHOW ME THE MONEY',-9,3) FROM DUAL;
-- 앞의 조건이 음수이기에 뒤에서부터 찾기 시작하지만
-- 뒤의 조건은 뒤에서 앞으로가 아닌 앞에서 뒤로진행한다
-- 그래서 THE가 출력이 된다
위코드 실행 내역
'코딩 > DataBase' 카테고리의 다른 글
Oracle SQL 배운 명령어 모음 (수정중) (0) | 2022.07.15 |
---|