데이터베이스

데이터베이스_SQL기본(문자열비교)_22.06.22(day03)

양빵빵 2022. 6. 22. 16:51

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'
;