[SQL] 검색시 - 무시되는 케이스 JOB 관련

create table tesT1
(
    data varchar(10)
)

insert into test1 values('test1')
insert into test1 values('te-st1')

select * from test1 where data > 'test0' and data < 'tesT2'

결과
test1
te-st1
왜일까요???

데이터의 정렬시에 하이픈이 무시되는 현상이 있다. 데이터의 기본 사항인것 같다.

조건은 test0에서 test2 사이의 값을 가져오라는 말이다.
이경우에는 하이픈이 무시된 결과를 반환한다.

하지만, where data = 'test1' 인 조건이라면, 당연히 test1만 반환한다.

정렬된 값을 가져올때는 하이픈이 무시되는 것이다.

사전에서 react와 re-act를 찾는다고 생각해 보십시오. 두 단어의 뜻은 다르게 해석될 수 있을진 몰라도 단어를 찾을
때 사전에서 나타나는 위치는 같은 곳이어야겠지.

만약 정렬에서도 두 단어가 구분되길 원한다면 해당 컬럼만 다른 collaTIon을 주면됩니다.
(SQL Collation 중 영문 베이스인 것...)

CREATE TABLE [dbo].[test2] (
    [data] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS
)

정렬에서 하이픈이 무시되는 조건은 이렇습니다.

1. Window Collation을 사용
2. SQL Collation 중에서 유니코드 기반인 것을 사용하는 경우 (KOREAN, JAPAN 등등)
3. 유니코드 데이터 타입

==> SQL에서 반쯤이상은 퍼온 내용.
==> 실수하기 딱 좋은 내용이네.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://blood.egloos.com/tb/1934025 [도움말]
  • 단순한문제~! 2009/07/31 16:31 #

    [SQL] 검색시 - 무시되는 케이스데이터에 하이푼이들어가는게.. 전화번호.. 주민등록번호..말고..하이푼..쓸일이...단순하게 생각해서.. 데이터가 바차니까 그냥 문자라고 생각해서 다가져올거라고 생각했는데..하이푼 하이푼..글쓰는데.. 팀장님이 뒤에서봄.. 식은땀 줄줄..;;;암튼 오늘 배운 한가지..collaTIon 쉬프트 F1누르면 설명은 자세히나옴미다!검색을 생활하함미다!... more

  • 빠진사슴의 생각 2009/07/31 16:34 #

    [SQL] 검색시 - 무시되는 케이스... more

덧글

덧글 입력 영역