찾다
데이터 베이스OracleORACLE에서 ORDER BY의 다양한 정렬에 대해 이야기해 보겠습니다.

이 기사는 단일 필드별 정렬, 여러 필드별 정렬, 하위 문자열별 정렬 등을 포함하여 ORDER BY의 다중 정렬과 관련된 문제를 주로 소개하는 Oracle에 대한 관련 지식을 제공합니다. 모든 사람에게 도움이 되기를 바랍니다.

ORACLE에서 ORDER BY의 다양한 정렬에 대해 이야기해 보겠습니다.

추천 튜토리얼: "Oracle Learning Tutorial"

1. 단일 필드로 정렬

오름차순: ORDER BY ASC(기본값)

내림차순: ORDER BY DESC

실제 쿼리 결과 반환 지정된 순서로 데이터를 추출하거나 보고서를 생성할 때 일반적으로 해당 부서에 고용된 직원의 정보를 보려면 특정 순서로 볼 필요가 있습니다.

SELECT empno, ename, hiredate FROM emp WHERE deptno = 10 ORDER BY hiredate ASC;

많은 사람들이 쿼리 결과를 정렬하기 위해 이런 종류의 문을 작성할 수 있지만 "ORDER BY Hiedate ASC" 외에도 세 번째 열을 기준으로 정렬한다는 의미인 "ORDER BY 3 ASC"를 작성할 수도 있습니다.

SELECT empno, ename, hiredate FROM emp WHERE deptno = 10 ORDER BY 3 ASC;

값이 확실하지 않은 경우 이 방법을 사용하면 매우 편리합니다.

데이터를 사용하여 열 위치를 바꾸는 것은 order by 절에서만 사용할 수 있으며 다른 곳에서는 사용할 수 없습니다

2. 여러 필드로 정렬

여러 열로 정렬했는데 증가 또는 감소가 있으면 어떻게 되나요? 예를 들어 부서번호를 기준으로 오름차순, 급여를 기준으로 내림차순으로 정렬할 경우 ASC는 오름차순, DESC는 내림차순을 의미하므로 두 개의 열을 추가하고 각각 ASC와 DESC를 표시합니다.

SELECT empno, deptno, sal, ename, job FROM emp ORDER BY 2 ASC, 3 DESC;

다음은 여러 열을 정렬할 때 이전 열에 중복된 값이 있는 경우(예: deptno = 10, 3행 데이터)와 같이 다이어그램 형태로 소개됩니다. , 후속 정렬은 유용할 뿐입니다. 이는 이전 열을 기준으로 데이터를 여러 그룹으로 나눈 후 다음 열을 기준으로 각 그룹의 데이터를 정렬하는 것과 같습니다.

3. 하위 문자열로 정렬

하위 문자열로 정렬하는 빠른 방법은 고객 전화번호를 마지막 번호 순서대로 기록하는 방법으로, 쿼리 범위를 빠르게 좁혀 고객 ​​인지도를 높일 수 있습니다. . 이런 식으로 정렬하고 싶다면 어떻게 해야 할까요? 다음 몇 비트에 필요한 정보를 얻으려면 이 기능을 사용하십시오.

SELECT last_name AS 名称,
       phone_number AS 号码,
       salary as 工资,
       substr(phone_number, -4) AS 尾号
  FROM hr.employees
 WHERE rownum <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/6df7db13e602f27c62ef940d1b15201d-3.png?x-oss-process=image/resize,p_40" class="lazy" alt=""    style="max-width:90%"  style="max-width:90%"></p><p> 데이터를 쿼리할 수 있는 한 해당 정보에 따라 정렬할 수 있음을 알 수 있습니다. </p><h2 id="TRANSLATE">4. TRANSLATE</h2><blockquote><p> 문법 형식: TRANSLATE(expr, from_string, to_string)</p></blockquote><p>예는 다음과 같습니다. </p><pre class="brush:php;toolbar:false">SELECT TRANSLATE( 'ab 你好 bcadefg', 'abcdefg', '1234567' ) AS NEW_STR FROM DUAL;

from_string과 to_string은 문자 단위이며, 해당 문자는 하나씩 교체됩니다. .

to_string이 비어 있으면 null 값이 반환됩니다.

SELECT TRANSLATE( 'ab 你好 bcadefg', 'abcdefg', '' ) AS NEW_STR FROM DUAL;

to_string의 해당 위치에 문자가 없으면 from_string에 나열된 문자를 삭제하면 제거됩니다.

SELECT TRANSLATE( 'ab 你好 bcadefg', '1abcdefg', '1' ) AS NEW_STR FROM DUAL;

5. 숫자와 문자가 혼합된 문자열에서 문자별로 정렬

먼저 다음과 같이 VIEW를 만듭니다.

CREATE OR REPLACE VIEW V 
as 
SELECT empno || ' ' || ename AS data FROM emp;
select * from V;

이 요구 사항은 조금 더 어렵습니다. 문자를 참조하세요. 내부(원래 열 이름입니까)? 그 안에 알파벳 순서가 필요합니다(열 ename).

그런 다음 먼저 문자를 제거해야 합니다. 번역의 바꾸기 기능을 사용하여 숫자와 공백을 빈 값으로 바꿀 수 있습니다.

SELECt data, translate (data, '- 0123456789', '-' )AS ename
  FROM v
 ORDER BY 2;

6. null 값 정렬 처리 ​​

Oracle 기본 null 정렬 나중에 null 값(예: emp.comm)을 표시하려면 어떻게 해야 하나요? NVL(comm, -1)을 사용해야 하나요?

SELECT ename, sal, comm, nvl(comm, - 1) order_col FROM emp ORDER BY 4;

也许很多人都是用的这种方法,但这种方法需要对列类型及其中保存的数据有所了解才行,而且保存的数据如果有变化,该语句就要重新维护。
其实可以用关键字 NULLS FIRST和 NULLS LAST。

空值在前

SELECT ename, sal, comm FROM emp ORDER BY 3 NULLS FIRST;

 空值在后

SELECT ename, sal, comm FROM emp ORDER BY 3 NULLS LAST;

 是不是要方便得多?

7. 根据条件取不同列中的值来排序

有时排序的要求会比较复杂,比如:领导对工资在1000到2000元之间的员工更感兴趣,于是要求工资在这个范围的员工要排在前面,以便优先査看。
对于这种需求,我们可以在查询中新生成一列,用多列排序的方法处理:

SELECT empno AS 编码,
       ename AS 姓名,
       CASE
         WHEN sal > 1000 AND sal <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/f6525214b6205d8e3e4c4cd75819a680-14.png?x-oss-process=image/resize,p_40" class="lazy" alt=""    style="max-width:90%"  style="max-width:90%"> </p><p> </p><p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/f6525214b6205d8e3e4c4cd75819a680-15.png?x-oss-process=image/resize,p_40" class="lazy" alt=""    style="max-width:90%"  style="max-width:90%"></p><p>可以看到,950与2850都排在了后面,也可以不显示级别,直接把 case when放在order by中</p><pre class="brush:php;toolbar:false">SELECT empno AS 编码, ename AS 姓名, sal AS工资
  FROM emp
 WHERE deptno = 30
 ORDER BY CASE
            WHEN sal >= 1000 AND sal <p> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/f6525214b6205d8e3e4c4cd75819a680-16.png?x-oss-process=image/resize,p_40" class="lazy" alt=""    style="max-width:90%"  style="max-width:90%"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/067/d778c41f53bfbf6813d884b027f6127c-17.png?x-oss-process=image/resize,p_40" class="lazy" alt=""    style="max-width:90%"  style="max-width:90%"></p><p>推荐教程:《<a href="https://www.php.cn/course/list/52.html" target="_blank">Oracle教程</a>》</p>

위 내용은 ORACLE에서 ORDER BY의 다양한 정렬에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 CSDN에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Oracle 라이브러리 실패를 삭제하는 방법Oracle 라이브러리 실패를 삭제하는 방법Apr 12, 2025 am 06:21 AM

Oracle이 라이브러리를 작성하지 못한 후 실패한 데이터베이스를 삭제하는 단계 : Sys 사용자 이름을 사용하여 대상 인스턴스에 연결하십시오. 드롭 데이터베이스를 사용하여 데이터베이스를 삭제하십시오. 쿼리 v $ 데이터베이스는 데이터베이스가 삭제되었는지 확인합니다.

Oracle Loop에서 커서를 만드는 방법Oracle Loop에서 커서를 만드는 방법Apr 12, 2025 am 06:18 AM

Oracle에서 FOR 루프 루프는 커서를 동적으로 생성 할 수 있습니다. 단계는 다음과 같습니다. 1. 커서 유형을 정의합니다. 2. 루프를 만듭니다. 3. 커서를 동적으로 만듭니다. 4. 커서를 실행하십시오. 5. 커서를 닫습니다. 예 : 커서는 상위 10 명의 직원의 이름과 급여를 표시하기 위해주기별로 만들 수 있습니다.

Oracle View를 내보내는 방법Oracle View를 내보내는 방법Apr 12, 2025 am 06:15 AM

Oracle View는 Expitility : Oracle 데이터베이스에 로그인하여 내보낼 수 있습니다. 뷰 이름 및 내보내기 디렉토리를 지정하여 EXP 유틸리티를 시작하십시오. 대상 모드, 파일 형식 및 테이블 스페이스를 포함한 내보내기 매개 변수를 입력하십시오. 내보내기를 시작하십시오. IMPDP 유틸리티를 사용하여 내보내기를 확인하십시오.

Oracle 데이터베이스를 중지하는 방법Oracle 데이터베이스를 중지하는 방법Apr 12, 2025 am 06:12 AM

Oracle 데이터베이스를 중지하려면 다음 단계를 수행하십시오. 1. 데이터베이스에 연결하십시오. 2. 즉시 종료; 3. 셧다운은 완전히 중단됩니다.

Oracle 로그가 가득 차면해야 할 일Oracle 로그가 가득 차면해야 할 일Apr 12, 2025 am 06:09 AM

Oracle Log 파일이 가득 차면 다음 솔루션을 채택 할 수 있습니다. 1) 오래된 로그 파일 청소; 2) 로그 파일 크기를 늘리십시오. 3) 로그 파일 그룹을 늘리십시오. 4) 자동 로그 관리를 설정합니다. 5) 데이터베이스를 다시 이용하십시오. 솔루션을 구현하기 전에 데이터 손실을 방지하기 위해 데이터베이스를 백업하는 것이 좋습니다.

Oracle Dynamic SQL을 만드는 방법Oracle Dynamic SQL을 만드는 방법Apr 12, 2025 am 06:06 AM

SQL 문은 Oracle의 동적 SQL을 사용하여 런타임 입력을 기반으로 작성 및 실행할 수 있습니다. 단계에는 다음이 포함됩니다 : 동적으로 생성 된 SQL 문을 저장할 빈 문자열 변수 준비. 즉시 실행 또는 준비 명령문을 사용하여 동적 SQL 문을 컴파일하고 실행하십시오. 바인드 변수를 사용하여 사용자 입력 또는 기타 동적 값을 동적 SQL로 전달하십시오. 동적 SQL 문을 실행하려면 즉시 실행 또는 실행을 사용하십시오.

Oracle 교착 상태이라면해야 할 일Oracle 교착 상태이라면해야 할 일Apr 12, 2025 am 06:03 AM

Oracle Deadlock Handling Guide : 교착 상태 식별 : 로그 파일에서 "교착 상태 감지"오류를 확인하십시오. 교착 상태 정보보기 : get_deadlock 패키지 또는 V $ 잠금 뷰를 사용하여 교착 상태 세션 및 리소스 정보를 얻습니다. 교착 상태 다이어그램 분석 : 교착 상태 다이어그램을 생성하여 잠금 보유 및 대기 상황을 시각화하고 교착 상태의 근본 원인을 결정하십시오. 롤백 교착 상태 세션 : 킬 세션 명령을 사용하여 세션을 롤백하지만 데이터 손실이 발생할 수 있습니다. 중단 교착 상태주기 : 차단 세션 명령을 사용하여 세션을 분리하고 고정 잠금 장치를 릴리스합니다. 교착 상태 방지 : 쿼리 최적화, 낙관적 잠금 사용, 거래 관리 수행 및 정기적으로

Oracle 모니터링을 시작하는 방법Oracle 모니터링을 시작하는 방법Apr 12, 2025 am 06:00 AM

Oracle 청취자를 시작하는 단계는 다음과 같습니다. Windows의 리스너 상태 (LSNRCTL 상태 명령 사용)를 확인하고 Linux 및 UNIX의 Oracle Services Manager에서 "TNS 리스너"서비스를 시작하고 LSNRCTL 시작 명령을 사용하여 리스너가 LSNRCTL 명령을 사용하여 리스너가 시작되었음을 확인하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경