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에서 반쯤이상은 퍼온 내용.
==> 실수하기 딱 좋은 내용이네.
(
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에서 반쯤이상은 퍼온 내용.
==> 실수하기 딱 좋은 내용이네.







덧글