Search

3-5. 문자의 크기 비교

문자의 크기 비교

데이터를 구성하는 가장 기본적인 데이터 자료형은 문자 또는 숫자다. 여기에 하나를 더 추가하면 날짜 형식의 자료형이 있다. 이외에도 다양한 자료형이 있지만, 기본적으로 이 세 개의 자료형이 많이 사용된다. 데이터를 시행착오 없이 잘 활용하기 위해서는 데이터 자료형에 따른 크기 비교에 대한 이해가 필요하다.
숫자의 크기 비교는 매우 간단하다. 1보다 2가 크고, 2보다는 10이 크다. 숫자 값 자체에 크기가 있기 때문에 쉽게 비교할 수 있다.
날짜의 크기 비교는 어떨까? SQL이나 프로그램을 다루어봤다면 , '2024년 5월 2일'이 '2024년 5월 1일'보다 크다라는 것을 알고 있을 것이다. 그러나 가만히 생각해 보면 날짜에 크기라는 것이 있을까? 두 날짜 모두 24시간이라는 똑같은 시간의 양을 가진 하루다. 다만, 프로그램에서는 날짜의 순서를 따져 크기를 결정한다. 보통은 순서상 앞쪽의 날짜가 작은 값, 뒤쪽의 날짜가 큰 값이 된다. 그러므로 '2024년 5월 2일'이 '2024년 5월 1일'보다 큰 값이 된다.
이처럼 프로그램 세계에서는 숫자가 아닌 형태의 데이터는 일정한 기준의 순서를 적용해 크기를 결정한다. (프로그램뿐만 아니라 데이터베이스도 마찬가지다.) 문자의 크기 비교 역시 마찬가지다. 일정한 기준으로 순서를 정해 크기 비교가 이루어진다.
문자의 경우는 일반적으로 알파벳 순서나 가나다 순서에 따라 크기가 결정된다. B는 A보다 크고, C는 B보다 큰 값이 된다. A부터 Z까지 중에는 A가 가장 작은 값, Z가 가장 큰 값이다.

문자열 크기 비교

문자가 두 개 이상 합쳐진 것을 문자열이라고 한다. 'CAFE'는 C, A, F, E라는 문자 네 개가 합쳐진 하나의 문자열이다. 문자열을 구성하는 요소가 문자이므로 문자열의 크기 비교도 문자의 규칙을 따른다. 다만, 문자열은 문자열 전체가 아닌 각 문자열의 앞 문자부터 차례대로 크기 비교를 수행한다. 아래의 예를 살펴보자.
'CAFE'와 'AMERICANO'의 크기를 비교
문자열 전체가 아닌 첫 번째 문자부터 차례대로 크기를 비교
두 문자열의 첫 번째 문자인 'C'와 'A'를 비교하면, 'C'가 'A'보다 크다.
첫 번째 문자에서 크기가 결정되었으므로 나머지 문자들은 더이상 비교하지 않는다.
첫 번째 문자가 큰 'CAFE'가 'AMERICANO'보다 큰 값으로 처리된다.
'CAFE'와 'COFFEE'의 크기를 비교
두 문자열의 첫 번째 문자가 'C'로 서로 같다.
첫 번째 문자가 서로 같으므로 그 다음 문자인 'CAFE'의 'A'와 'COFFEE'의 'O'를 비교.
'A'와 'O'를 비교하면 'O'가 크다. 크기가 결정되었으므로 나머지 문자는 더이상 비교하지 않는다.
첫 문자가 서로 같으므로 두 번째 문자가 큰 'COFFEE'가 'CAFE'보다 큰 값으로 처리된다.
이처럼 문자열의 크기 비교는 가장 앞 문자부터 차례대로 크기 비교가 이루어진다. 컴퓨터 프로그램에 익숙하지 않은 사람들에게는 낯설게 느껴질 수 있는 부분이다.
문자와 문자열의 크기 비교 개념을 이해했다면 다음 SQL을 실행해보자. ItemId(상품ID)에 문자열로 크기 비교 조건을 넣었고, 그에 맞는 데이터가 어떻게 나오는지 한번씩 확인해보기 바란다.
-- [SQL-3-5-1] -- ItemId가 B보다 작거나 같은 데이터 조회 SELECT ItemId ,ItemNm ,ItemCat, HotColdCd FROM startdb.Item WHERE ItemId <= 'B'; ItemId ItemNm ItemCat HotColdCd ------ ------------ ------- --------- AMB Americano(B) COF HOT AMR Americano(R) COF HOT -- [SQL-3-5-2] -- ItemId가 BZ보다 작거나 같은 데이터 조회 SELECT ItemId ,ItemNm ,ItemCat, HotColdCd FROM startdb.Item WHERE ItemId <= 'BZ'; ItemId ItemNm ItemCat HotColdCd ------ ------------------- ------- --------- AMB Americano(B) COF HOT AMR Americano(R) COF HOT BGLR Bagel(R) BKR HOT BMFR Blueberry Muffin(R) BKR COLD
SQL
복사

문자형 숫자

SQL의 WHERE 절에 조건 값을 줄 때 일반적으로 숫자 또는 문자 형태의 조건 값을 사용할 수 있다. 숫자 조건을 줄때는 숫자를 바로 입력하면 되고, 문자 형태 조건 값을 주기 위해서는 조건 값을 싱글따옴표로 처리해야 한다. 그렇다면 아래 SQL의 WHERE 절에 입력한 조건 값 '1234'는 숫자일까? 문자일까?
SELECT * FROM TAB WHERE TAB_COL = '1234';
SQL
복사
위 SQL에서 조건 값으로 사용한 '1234'는 싱글따옴표 처리가 되어 있으므로 숫자가 아닌 문자다. 1234라는 값 자체는 숫자이지만, 싱글따옴표 처리를 했으므로 이는 숫자가 아닌 문자로 인식된다. 그러므로 '1234'는 문자열의 크기 비교 규칙을 따르게 된다. 아래 예를 살펴보자.
'1234'와 '23'의 크기 비교
두 값에 모두 싱글따옴표 처리했기 때문에 문자열
문자열은 첫 문자부터 차례대로 비교 처리
'1234'와 '23'의 첫 번째 문자인 '1'과 '2'의 비교가 먼저 이루어진다.
문자 '2'가 '1'보다 크므로, '23'이 '1234'보다 큰 값으로 판정이 된다.
숫자 1234와 23을 비교하면 어떻게 될까? 숫자 비교는 숫자 값 전체로 비교한다. 그러므로 1,234(천이백삼십사)가 23(이십삼)보다 큰 값이 된다. 컴퓨터 속의 데이터를 자주 접해보지 않았다면 헷갈릴 수 있는 내용이다. "값이 온전히 숫자여도 싱글따옴표가 사용되었다면 이는 문자열이다." 이 부분을 기억하자. 그리고 "문자열은 문자열의 크기 비교 규칙을 따르게 된다."는 것도 기억하기 바란다.
아래는 문자형 숫자의 크기 비교 예제다. 하나씩 살펴보면서 고민해보자.

문자종류에 따른 정렬 순서

문자를 아래와 같이 크게 4개로 분류해 볼 수 있다.
특수문자: !, *, #, @와 같은 특수 기호
문자형숫자: 1, 15, 349와 같은 숫자이지만 문자로 처리된 경우
알파벳: 영어의 알파벳
한글 또는 각 나라의 언어
위와 같은 문자 종류는 "일반적"으로 특수문자, 문자형숫자, 알파벳, 한글(각 나라의 언어) 순서로 크기가 커진다. ("일반적"을 강조한 이유는 반드시 이러한 순서가 아닐 수 있기 때문입니다.) 일부 특수문자(@나 _(Under bar))는 알파벳보다 큰 값으로 판단되기도 하므로 주의가 필요하다.