파이프 문자가 포함 된 문자 열로 정렬 할 때는 SQL 서버가 특별한 작업을 수행해야합니다.파이프 문자로 SQL 서버 정렬 순서
아스키 ('0')가 반환하여 48
주문을 반환
아스키 ('|가 |') 유니 코드 ('')처럼 124을 반환 '|' 문자와 숫자 앞에있는 문자.
저는 데이터 정렬을 보려고했는데, 보았을 때 '|' 문자는 항상 내 테스트
select * from (
select '0' as col1, ASCII('0') as col2, unicode('0') as col3
union select '1' as col1, ASCII('1') as col2, unicode('1') as col3
union select '|' as col1, ASCII('|') as col2, unicode('|') as col3
union select 'a' as col1, ASCII('a') as col2, unicode('a') as col3
union select ' ' as col1, ASCII(' ') as col2, unicode(' ') as col3
union select '.' as col1, ASCII('.') as col2, unicode('.') as col3
union select '/' as col1, ASCII('/') as col2, unicode('/') as col3
) as q
order by col1
이 쿼리의 반환을 선택 여기에 값을 124
있습니다
col1 col2 col3
1 32 32
2 . 46 46
3 / 47 47
4 | 124 124
5 0 48 48
6 1 49 49
7 a 97 97
이유는 무엇입니까 47과 48 사이 (124) 가을?
사용되는 데이터 정렬은 SQL_Latin1_General_CP1_CI_AI입니다.
이진 배열 만 정렬을 위해 문자의 ascii/unicode 값을 사용하는 경우이 정렬에서 문자의 정렬 순서를 어떻게 찾을 수 있습니까?
문자 코드를 사용하여 정렬하는 것은 이진 데이터 정렬 일뿐입니다. 'SELECT ASCII ('A'), ASCII ('a')'는'65,97'을 반환하지만 대부분의 데이터 정렬에서는 서로 정렬됩니다. –
내 인스턴스가 SQL_Latin1_General_CP1_CI_AI를 사용하고 있으므로 'A'와 'a'가 서로 나란히 정렬됩니다. 해당 데이터 정렬에 대한 정렬 순서를 찾는 방법을 알고 있습니까? – GregA100k
그렇게 간단하지 않습니다. 'SELECT CHAR (number) FROM master..spt_values where type = 'P'그리고 0에서 255 사이의 ORDER BY CHAR (number) 사이의 숫자는 약간의 아이디어를 제공합니다. 그러나 'SELECT', 'AS X UNION SELECT', 'AE'UNION SELECT 'AF'ORDER BY X'의 정렬 순서를 보면 이것은 단일 문자 정렬 순서가 아닙니다. –