CHAR 타입 끼리의 비교
먼저 예제 테이블 생성.
컬럼
sn CHAR(10), char_4 CHAR(4), char_6 CHAR(6)
INSERT로 데이터 넣기
sn CHAR(10), 101
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLD
====
sn CHAR(10), 102
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLA
SELECT * FROM 으로 char_compare 테이블 전체 조회
sn CHAR(10), 101
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLD
====
sn CHAR(10), 102
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLA
sn CHAR(10), 101
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLD -> 'SQLD '
====
sn CHAR(10), 102
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLA -> 'SQLA '
REPLACE 함수를 활용하여 공백에 +를 표시해 보려고 한다.
REPLACE 실행 결과.
[양쪽이 모두 CHAR타입인 경우 문자비교]
- 길이가 서로 다르면 작은 쪽에 공백을 추가하여 길이를 같게 함.
- 서로 다른 문자가 나올 때 까지 비교
- 달라진 첫번째 값에 따라 크기를 결정
- 공백의 수만 다르다면 같은 값으로 결정
[양쪽이 모두 CHAR타입인 경우 문자비교]
- 길이가 서로 다르면 작은 쪽에 공백을 추가하여 길이를 같게 함.
sn CHAR(10), 101
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLD -> 'SQLD '
====
sn CHAR(10), 102
char_4 CHAR(4), = SQLD
char_6 CHAR(6) = SQLA -> 'SQLA '
SELECT FROM의 조회의 조건문 WHERE가 FALSE 이므로 조회 되지 않는다.
-- # 문자열 비교
-- CHAR타입끼리의 비교
DROP TABLE CHAR_COMPARE;
CREATE TABLE CHAR_COMPARE (
sn CHAR(10),
char_4 CHAR(4),
char_6 CHAR(6)
);
INSERT INTO char_compare VALUES ('101', 'SQLD', 'SQLD');
INSERT INTO char_compare VALUES ('102', 'SQLD', 'SQLA');
COMMIT;
SELECT * FROM char_compare;
-- REPLACE(X, a, b) : X에서 a를 찾아 b로 전부 바꿈
-- REPLACE(X, a) : X에서 a를 찾아 전부 삭제
SELECT
REPLACE(sn, ' ', '+') AS char_4,
REPLACE(char_4, ' ', '+') AS char_4,
REPLACE(char_6, ' ', '+') AS char_6
FROM char_compare;
SELECT
REPLACE(char_4, ' ', '+') AS char_4,
REPLACE(char_6, ' ', '+') AS char_6
FROM char_compare
WHERE sn = '101'
AND char_4 = char_6
;
SELECT
REPLACE(char_4, ' ', '+') AS char_4,
REPLACE(char_6, ' ', '+') AS char_6
FROM char_compare
WHERE sn = '102'
AND char_4 > char_6
;
SELECT * FROM char_compare;
-- 한쪽이 VARCHAR타입일 경우의 비교
DROP TABLE VARCHAR_COMPARE;
CREATE TABLE VARCHAR_COMPARE (
sn CHAR(10),
char_4 CHAR(4),
varchar_6 VARCHAR2(6)
);
INSERT INTO varchar_compare VALUES ('101', 'SQLD', 'SQLD ');
INSERT INTO varchar_compare VALUES ('102', 'SQLD', 'SQLA ');
COMMIT;
SELECT * FROM varchar_compare;
SELECT
REPLACE(char_4, ' ', '+') AS char_4,
REPLACE(varchar_6, ' ', '+') AS varchar_6
FROM varchar_compare
WHERE sn = '101'
AND char_4 = varchar_6
;
-- 상수문자열과의 비교
SELECT
REPLACE(char_4, ' ', '+') AS char_4,
REPLACE(varchar_6, ' ', '+') AS varchar_6
FROM varchar_compare
WHERE sn = '101'
AND char_4 = 'SQLD '
;
SELECT
REPLACE(char_4, ' ', '+') AS char_4,
REPLACE(varchar_6, ' ', '+') AS varchar_6
FROM varchar_compare
WHERE sn = '101'
AND varchar_6 = 'SQLD'
;
'데이터베이스' 카테고리의 다른 글
데이터베이스_SQL기본(함수_문자열) 연습문제_22.06.22(day03) (0) | 2022.06.22 |
---|---|
데이터베이스_SQL기본(함수_문자열)_22.06.22(day03) (0) | 2022.06.22 |
데이터베이스_SQL기본(WHERE절_교안)_22.06.22(day03) (0) | 2022.06.22 |
데이터베이스_SQL_실전문제_22.06.22(day03) (0) | 2022.06.22 |
데이터베이스_SQL기본(WHERE절_예제)_22.06.22(day03) (0) | 2022.06.22 |