반응형
Oracle SQL 쿼리를 사용하여 먼저 숫자별로 정렬하는 방법은 무엇입니까?
이 표에는 '제목' 필드가 varchar2로 되어 있으며, 모든 행을 선택하여 번호별로 정렬한 후 알파벳별로 정렬합니다.
예를 들어, 저는 현재 간단한 것을 사용하여 이것을 얻습니다.ORDER BY title
결국에는:
- ABC
- 데프
- 321
하지만 나는 이것을 원합니다.
- 321
- ABC
- 데프
이상한 것은 SQL Developer가 숫자가 먼저인 "올바른" 순서를 보여준다는 것입니다.하지만 제 앱(OCI8을 사용한 PHP)에서는 마지막에 숫자가 표시됩니다.
Oracle 전문가는 아니지만 세션을 변경하지 않고도 이 작업을 수행할 수 있어야 합니다.
SELECT * FROM my_data SORT by NLSSORT(title,’NLS_SORT=BINARY_AI’)
변경할 수 있는 위치NLS_SORT=
사용자의 요구에 적합합니다(값 목록은 다음과 같습니다).
문서에 따르면 테이블 검색이 강제로 실행되므로 먼저 필터링하는 것이 좋을 수 있습니다(그러나 모든 테이블 검색을 선택하는 경우에는 어쨌든 사용할 항목임).
SQL Developer가 다른 동작을 보이는 이유는 세션을 변경하기 때문일 수 있습니다.
당신이 보고 있는 행동의 차이는 아마도 다른 것 때문일 것입니다.NLS_SORT
매개 변수 설정.고려 사항:
SQL> select * from nls_session_parameters where parameter='NLS_SORT';
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_SORT BINARY
SQL> SELECT * FROM my_data order by title;
TITLE
-----
321
Abc
Def
SQL> alter session set nls_sort=french;
Session altered
SQL> SELECT * FROM my_data order by title;
TITLE
-----
Abc
Def
321
당신은 당신의 요구에 상관없이 당신에게 기대되는 결과를 제공해야 하는 쿼리를 구축할 수 있습니다.NLS_SORT
세션 매개 변수 설정(예:
SQL> SELECT *
2 FROM my_data
3 ORDER BY CASE
4 WHEN regexp_like(title, '[0-9]+\.?[0-9]*') THEN
5 1
6 ELSE
7 2
8 END, title;
TITLE
-----
321
Abc
Def
언급URL : https://stackoverflow.com/questions/4324410/how-to-sort-by-numbers-first-with-oracle-sql-query
반응형
'source' 카테고리의 다른 글
각도 2 테스트:ComponentFix에서 DebugElement와 NativeElement 개체의 차이점은 무엇입니까? (0) | 2023.08.07 |
---|---|
방법 수준의 스프링 프로파일? (0) | 2023.08.07 |
SQL Server에서 해당하는 %Rowtype (0) | 2023.08.07 |
파이썬에서 어레이에서 임의의 요소를 선택하려면 어떻게 해야 합니까? (0) | 2023.08.07 |
jQuery를 사용하여 즉시 하위 div 요소 카운트 (0) | 2023.08.07 |