[SQL] PostgreSQL의 정렬
SQLPostgreSQL의 정렬
나는 데이터 아래에 PostgreSQL을에 정렬 문제가있다 :
name
-----
@CF
@CG
CD
CE
나는 아래와 같은 이름으로 테이블 순서에서 결과를 선택 이름을 사용 :
name
-----
CD
CE
@CF
@CE
이 포스트 그레스 그냥 특수 문자를 무시하는 것 같다 @ 왼쪽 문자열을 정렬합니다. 그것은 다음과 같이 분류처럼 그러나, 나는 거라고 :
name
-----
@CF
@CG
CD
CE
인터넷을 검색하는 것은 도움이되지 않았다. 나는 희망 누군가가 여기에 제안을 줄 수 있습니다.
해결법
-
==============================
1.사용의 PostgreSQL의 데이터 정렬 지원은 특정 데이터 정렬을 원하는 그것을 말할 수 있습니다.
사용의 PostgreSQL의 데이터 정렬 지원은 특정 데이터 정렬을 원하는 그것을 말할 수 있습니다.
주어진:
CREATE TABLE t AS VALUES ('CD'),('CE'),('@CF'),('@CE');
다음을 사용하여 바이트 현명한 정렬을 강제 할 수 있습니다 :
SELECT * FROM t ORDER BY column1 COLLATE "C";
은 "C"데이터 정렬 등, 인코딩, 국가의 언어 규칙을 무시 바이트 현명한 조합이다
-
==============================
2.그냥 ORDER BY 절에 그 추가 :
그냥 ORDER BY 절에 그 추가 :
ORDER BY CASE WHEN LEFT(name,1) = '@' THEN 0 ELSE 1 END ASC, name ASC
-
==============================
3.귀하의 비공개 데이터 정렬 설정은 분명히 정렬 순서에 @ 문자를 무시합니다. @Craig에 의해 제안 중 하나를 다른 데이터 정렬로 전환합니다. 당신은 문자열의 나머지 부분에 대한 데이터 정렬에 충실하려는 경우 또는, 선도를위한 특별한 경우를 추가 @.
귀하의 비공개 데이터 정렬 설정은 분명히 정렬 순서에 @ 문자를 무시합니다. @Craig에 의해 제안 중 하나를 다른 데이터 정렬로 전환합니다. 당신은 문자열의 나머지 부분에 대한 데이터 정렬에 충실하려는 경우 또는, 선도를위한 특별한 경우를 추가 @.
포스트 그레스에서 직접 부울 값으로 주문할 수 있습니다. 기본 순서는 FALSE, TRUE, NULL이다.
ORDER BY name !~~ '@%', name
! ~~ Postgres의이 NOT LIKE에 대한 나타내는 표현이되고.
-
==============================
4.이 옵션을 사용합니다 :
이 옵션을 사용합니다 :
SELECT name FROM table ORDER BY name WHEN LEFT(name, 1) = '@' THEN 0 ELSE 1 END, name
from https://stackoverflow.com/questions/20865552/postgresql-sort by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 한 카테고리 당 최신 2 개 아이템을 얻을하는 방법 (MySQL과) 선택 (0) | 2020.07.17 |
---|---|
[SQL] VBA에서 액세스 모듈에서 매개 변수를 전달하는 동안 저장 프로 시저를 호출 (0) | 2020.07.17 |
[SQL] BY 절 SQL GROUP에서 빈 그룹을 반환하는 방법 (0) | 2020.07.17 |
[SQL] PostgreSQL을 업데이트 가입과 (0) | 2020.07.17 |
[SQL] 열이 null MySQL을 수 없습니다 (0) | 2020.07.17 |