다양한 데이터 유형에 대한 NVL 변환. EXP(n) 및 LN(n) 함수

NVL 기능

NVL 함수는 일반적으로 가장 자주 사용됩니다. 이 함수는 NVL(expr1, expr2)라는 두 개의 매개변수를 받습니다. 첫 번째 매개변수 expr1이 NULL이 아니면 함수는 해당 값을 반환합니다. 첫 번째 매개변수가 NULL이면 함수는 대신 두 번째 매개변수 expr2의 값을 반환합니다.

실제적인 예를 살펴보겠습니다. EMP 테이블의 COMM 필드에는 NULL 값이 포함될 수 있습니다. 다음과 같은 쿼리를 실행할 때:

EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM 선택

SCOTT.EMP에서

NULL 값은 0으로 대체됩니다. 함수를 사용하여 값이 생성되면 별칭이 할당됩니다. 쿼리 결과는 다음과 같습니다.

엠프노 ENAME COMM NVL_COMM
7369 스미스 0
7499 알렌 300 300
7521 500 500
7566 존스 0
7654 남자 이름 1400 1400
7698 블레이크 0
7782 클락 0
7839 0
7844 돌리는 사람 0 0
7900 제임스 0
7902 포드 0
7934 밀러 0

기능 CEIL(n)

CEIL 함수는 매개변수로 전달된 숫자 n보다 크거나 같은 가장 작은 정수를 반환합니다. 예를 들어:

CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4 선택

듀얼에서

기능 TRUNC(n [,m])

TRUNC 함수는 소수점 m자리까지 잘린 숫자 n을 반환합니다. m 매개변수는 지정되지 않을 수 있습니다. 이 경우 n은 정수로 잘립니다.

SELECT TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

듀얼에서

함수 SIGN(n)

SIGN 함수는 숫자의 부호를 결정합니다. n이 양수이면 함수는 1을 반환합니다. n이 음수이면 -1을 반환합니다. 0과 같으면 0이 반환됩니다. 예를 들면 다음과 같습니다.

SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3 선택

듀얼에서

이 함수의 흥미로운 특징은 0으로 나누는 오류를 일으키지 않고 m을 0과 동일하게 전송할 수 있다는 것입니다.

기능 POWER(n,m)

POWER 함수는 숫자 n을 m으로 거듭제곱합니다. 정도는 분수 및 음수가 될 수 있으며 이는 이 기능의 기능을 크게 확장합니다.

선택 전원(10, 2) X1, 전원(100, 1/2) X2,

힘(1000, 1/3) X3, 힘(1000, -1/3) X4

듀얼에서

X1 X2 X3 X4
100 10 10 0,1

어떤 경우에는 이 함수를 호출할 때 예외가 발생할 수 있습니다. 예를 들어:

전력 선택(-100, 1/2) X2

듀얼에서

이 경우 음수의 제곱근을 계산하려고 시도하면 ORA-01428 "Argument out of range" 오류가 발생합니다.

기능 SQRT(n)

이 함수는 숫자 n의 제곱근을 반환합니다. 예를 들어:

SQRT(100) X 선택

듀얼에서

EXP(n) 및 LN(n) 함수

EXP 함수는 e의 n제곱을 증가시키고 LN 함수는 n의 자연 로그를 계산합니다(n은 0보다 커야 함). 예:

선택 EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

우리는 앞서 중첩된 함수에 대해 다루었습니다. 이제 좀 더 자세히 살펴보겠습니다. 또한 NULL 값을 사용하는 함수와 쿼리에서 분기 작업을 구현하는 데 도움이 되는 함수도 고려할 것입니다.

중첩된 함수

중첩 함수는 한 함수의 반환 값을 다른 함수에 대한 입력 매개 변수로 사용합니다. 함수는 항상 하나의 값만 반환합니다. 따라서 함수 호출의 결과를 다른 함수 호출에 대한 매개 변수로 사용할 때 값 리터럴로 처리할 수 있습니다. 문자열 함수는 모든 중첩 수준에 중첩될 수 있습니다. 하나의 함수 호출은 다음과 같습니다

함수1(매개변수1, 매개변수2, …) = 결과

함수 매개변수를 다른 함수에 대한 호출로 바꾸면 다음과 같은 표현식이 나타날 수 있습니다.

F1(param1.1, F2(param2.1, param2.2, F3(param3.1)), param1.3)

중첩된 함수는 그 결과가 다른 함수의 입력 값으로 사용되기 전에 먼저 평가됩니다. 함수는 가장 깊은 중첩 수준부터 왼쪽에서 오른쪽으로 최상위까지 평가됩니다. 이전 표현식은 다음과 같이 실행됩니다.

  1. 함수 F3(param1)이 평가되고 반환 값이 함수 2의 세 번째 매개변수로 사용됩니다. param2.3이라고 하겠습니다.
  2. 그런 다음 함수 F2(param1, param2.2, param2.3)가 평가되고 반환 값은 함수 F1 - param1.2의 두 번째 매개 변수로 사용됩니다.
  3. 마지막으로 함수 F1(param1, param2, param1.3)이 평가되고 결과가 호출 프로그램에 반환됩니다.

따라서 F3 함수는 세 번째 중첩 수준에 있습니다.

요청을 고려해보자

듀얼에서 next_day(last_day(sysdate)-7, 'tue')를 선택합니다.

  1. 이 쿼리에는 하위 수준에서 상위 수준까지 세 가지 함수(SYSDATE, LAST_DAY, NEXT_DAY)가 있습니다. 요청은 다음과 같이 수행됩니다.
  2. 중첩된 SYSDATE 함수가 실행됩니다. 현재 시스템 시간을 반환합니다. 현재 날짜가 2009년 10월 28일이라고 가정해 보겠습니다.
  3. 다음으로 두 번째 수준 함수 LAST_DAY의 결과가 계산됩니다. LAST_DATE('28-OCT-2009')는 2009년 10월의 마지막 날인 2009년 10월 31일을 반환합니다.
  4. 그런 다음 이 날짜에서 7일을 빼면 10월 24일이 됩니다.
  5. 마지막으로 NEXT_DAY('24-OCT-2009', 'tue') 함수가 평가되고 쿼리는 10월 마지막 화요일(이 예에서는 27-OCT-2009)을 반환합니다.

많은 중첩 함수 호출을 사용하여 복잡한 표현식을 이해하고 작성하는 것은 상당히 어렵지만 시간과 연습이 필요합니다. 이러한 표현식을 여러 부분으로 나누어 별도로 테스트할 수 있습니다. DUAL 테이블은 쿼리 및 함수 호출 결과를 테스트하는 데 매우 유용합니다. 작은 구성요소를 테스트하고 디버그한 다음 원하는 하나의 큰 표현식으로 결합할 수 있습니다.

분기 기능

IF-THEN-ELSE라고도 알려진 분기 함수는 일부 상황에 따라 실행 경로를 결정하는 데 사용됩니다. 분기 함수는 조건 평가 결과에 따라 다른 결과를 반환합니다. 이러한 함수 그룹에는 NULL 값 작업을 위한 함수(NVL, NVL2, NULLIF 및 COALESCE)가 포함됩니다. 그리고 DECODE 함수와 CASE 표현식으로 표현되는 공통 함수도 있습니다. DECODE 함수는 Oracle 함수인 반면 CASE 표현식은 ANSI SQL 표준에 있습니다.

NVL 기능

NVL 함수는 NULL에 대해 모든 데이터 유형의 열 또는 표현식 값을 테스트합니다. 값이 NULL이면 NULL이 아닌 대체 기본값을 반환하고, 그렇지 않으면 원래 값을 반환합니다.

NVL 함수에는 두 개의 필수 매개변수가 있으며 구문은 NVL(original, ifnull)입니다. 여기서 원본은 확인할 원래 값이고 ifnull은 원래 값이 NULL인 경우 함수에서 반환된 결과입니다. ifnull 매개변수와 원래 매개변수의 데이터 유형은 호환되어야 합니다. 즉, 데이터 유형이 동일해야 하거나 암시적으로 한 유형에서 다른 유형으로 값을 변환하는 것이 가능해야 합니다. NVL 함수는 원래 매개변수의 데이터 유형과 동일한 데이터 유형의 값을 반환합니다. 세 가지 쿼리를 고려해 보겠습니다.

쿼리 1: 듀얼에서 nvl(1234)을 선택합니다.

쿼리 2: 듀얼에서 nvl(null, 1234)을 선택합니다.

쿼리 3: 이중에서 nvl(substr('abc', 4), '부분 문자열이 없습니다')를 선택합니다.

NVL 함수에는 두 개의 매개변수가 필요하므로 요청 1은 오류 ORA-00909: 잘못된 인수 개수를 반환합니다. 쿼리 2는 NULL 값이 확인되어 NULL이므로 1234를 반환합니다. 쿼리 3은 3자 길이의 문자열에서 네 번째 문자를 추출하여 NULL을 반환하는 중첩된 SUBSTR 함수와 'No sbustring presents'라는 문자열을 반환하는 NVL 함수를 사용합니다.

NVL 함수는 숫자 작업 시 매우 유용합니다. 숫자에 대한 산술 연산이 NULL을 반환하지 않도록 NULL 값을 0으로 변환하는 데 사용됩니다.

NVL 기능2

NVL2 함수는 NVL보다 더 많은 기능을 제공하지만 NULL 값을 처리하는 역할도 합니다. NULL에 대해 모든 유형의 열 또는 표현식 값을 테스트합니다. 값이 NULL이 아니면 두 번째 매개변수가 반환되고, 그렇지 않으면 원래 값을 반환하는 NVL 함수와 달리 세 번째 매개변수가 반환됩니다.

NVL2 함수에는 세 개의 필수 매개변수가 있으며 구문은 NVL2(original, ifnotnull, ifnull)입니다. 여기서 원본은 테스트 중인 값이고, ifnotnull은 원본이 NULL이 아닌 경우 반환되는 값이고, ifnull은 원본이 NULL인 경우 반환되는 값입니다. ifnotnull 및 ifnull 매개변수의 데이터 유형은 호환 가능해야 하며 LONG 유형일 수 없습니다. NVL2 함수에 의해 반환된 데이터 유형은 ifnotnull 매개변수의 데이터 유형과 동일합니다. 몇 가지 예를 살펴보겠습니다.

쿼리 1: 듀얼에서 nvl2(1234, 1, 'a string')을 선택합니다.

쿼리 2: 듀얼에서 nvl2(null, 1234, 5678)를 선택합니다.

쿼리 3: 이중에서 nvl2(substr('abc', 2), 'Not bc', 'No substring')을 선택합니다.

요청 1의 ifnotnull 매개변수는 숫자이고 ifnull 매개변수는 문자열입니다. 데이터 유형이 호환되지 않기 때문에 "ORA-01722: 잘못된 숫자" 오류가 반환됩니다. 쿼리 2는 원본이 NULL이고 결과가 5678이므로 ifnull 매개변수를 반환합니다. 쿼리 3은 'bc'를 반환하고 NVL2('bc','Not bc','No substring')을 호출하는 SUBSTR 함수를 사용합니다. ifnotnull 매개변수 – 'BC가 아님'.

NULLIF 함수

NULLIF 함수는 두 값이 동일한지 확인합니다. 동일하면 NULL이 반환되고, 그렇지 않으면 첫 번째 매개변수가 반환됩니다. NULLIF 함수에는 두 개의 필수 매개변수가 있으며 구문은 NULLIF(ifunequal, 비교_항목)입니다. 이 함수는 두 매개변수를 비교하여 동일하면 NULL을 반환하고, 그렇지 않으면 매개변수는 동일하지 않습니다. 요청을 고려해 봅시다

쿼리 1: 이중에서 nullif(1234, 1234)를 선택합니다.

매개변수가 동일하므로 쿼리 1은 NULL을 반환합니다. 쿼리 2의 문자열은 날짜로 변환되지 않고 문자열로 비교됩니다. 문자열의 길이가 다르기 때문에 ifunequal 매개변수는 2009년 7월 24일에 반환됩니다.

그림 10-4에서 NULLIF 함수는 NVL2 함수 내에 중첩되어 있습니다. NULLIF 함수는 ifunequal 매개변수 표현식의 일부로 SUBSTR 및 UPPER 함수를 사용합니다. EMAIL 열은 이름이 4자인 직원의 성과 결합된 이름의 첫 글자를 반환하는 이 표현식과 비교됩니다. 이러한 값이 동일하면 NULLIF는 NULL을 반환하고, 그렇지 않으면 ifunequal 매개 변수의 값을 반환합니다. 이 값은 NVL2 기능의 매개변수로 사용됩니다. NVL2는 비교된 요소가 일치하는지 여부에 대한 설명을 반환합니다.

그림 10-4 – NULLIF 함수 사용

COALESCE 기능

COALESCE 함수는 매개변수 목록에서 NULL이 아닌 첫 번째 값을 반환합니다. 모든 매개변수가 NULL이면 NULL이 반환됩니다. COALESCE 함수에는 두 개의 필수 매개변수와 임의 개수의 선택적 매개변수가 있으며 구문은 COALESCE(expr1, expr2, ..., exprn)입니다. 여기서 expr 1의 값이 NULL이 아니면 결과는 expr1이 되고, 그렇지 않으면 결과는 다음과 같습니다. NULL이 아닌 경우 expr2 등입니다. COALESCE는 중첩된 NVL 함수와 의미가 동일합니다.

COALESCE(expr1, expr2) = NVL(expr1, expr2)

COALESCE(expr1, expr2, expr3) = NVL(expr1,NVL(expr2, expr3))

NULL이 아닌 값이 발견된 경우 반환된 값의 데이터 유형은 NULL이 아닌 첫 번째 값의 데이터 유형과 동일합니다. 'ORA-00932: 불일치 데이터 유형' 오류를 방지하려면 NULL이 아닌 모든 매개변수가 NULL이 아닌 첫 번째 매개변수와 호환되어야 합니다. 세 가지 예를 살펴보겠습니다.

쿼리 1: 듀얼에서 coalesce(null, null, null, 'a string')을 선택합니다.

쿼리 2: 듀얼에서 coalesce(null, null, null)를 선택합니다.

쿼리 3: 듀얼에서 coalesce(substr('abc', 4), 'Not bc', 'No substring')을 선택합니다.

쿼리 1은 네 번째 매개변수인 문자열을 반환합니다. 이는 NULL이 아닌 첫 번째 매개변수이기 때문입니다. 모든 매개변수가 NULL이므로 쿼리 2는 NULL을 반환합니다. 쿼리 3은 첫 번째 매개변수를 평가하고, NULL 값을 가져온 다음, 두 번째 매개변수가 NULL이 아닌 첫 번째 매개변수이므로 두 번째 매개변수를 반환합니다.

NVL 함수에 이미 익숙하다면 NVL2 함수 매개변수가 혼동될 수 있습니다. NVL(original, ifnull)은 값이 NULL이 아니면 원본을 반환하고, 그렇지 않으면 ifnull을 반환합니다. NVL2(original, ifnotnull, ifnull)는 원본이 NULL이 아니면 ifnotnull을 반환하고 그렇지 않으면 ifnull을 반환합니다. 혼란은 NVL 함수의 두 번째 매개변수가 ifnull인 반면 NVL2 함수는 ifnotnull이라는 사실에서 비롯됩니다. 따라서 함수에서 매개변수의 위치에 의존하지 마세요.

디코드 기능

DECODE 함수는 처음 두 매개변수가 같은지 테스트하고 같으면 세 번째 값을 반환하고 같지 않으면 다른 값을 반환하여 if-then-else 논리를 구현합니다. DECODE 함수에는 세 가지 필수 매개변수가 있으며 구문은 DECODE(expr1, comp1, iftrue1, , )입니다. 이러한 매개변수는 다음 의사코드 예제에 표시된 대로 사용됩니다.

expr1=comp1이면 iftrue1을 반환합니다.

그렇지 않으면 expr1=comp2이면 iftrue2를 반환합니다.

그렇지 않으면 exprN=compN이면 trueN을 반환합니다.

그렇지 않으면 NULL|iffalse를 반환합니다.

먼저 expr1을 comp1과 비교합니다. 동일하면 iftrue1이 반환됩니다. expr1이 comp1과 같지 않으면 다음에 일어나는 일은 comp2 및 iftrue2 매개변수가 지정되었는지 여부에 따라 달라집니다. 주어지면 expr1의 값이 comp2와 비교됩니다. 값이 동일하면 iftrue2가 반환됩니다. 그렇지 않은 경우 매개변수 compN, iftrueN 쌍이 있으면 expr1 및 compN을 비교하고 동일하면 iftrueN이 반환됩니다. 매개변수 집합에서 일치하는 항목이 발견되지 않으면 이 매개변수가 지정된 경우 false이거나 NULL이 반환됩니다.

DECODE 함수의 모든 매개변수는 표현식일 수 있습니다. 반환 값의 유형은 첫 번째 유효성 검사 요소(매개변수)의 유형과 동일합니다. 1. 표현식 expr 1은 암시적으로 comp 매개변수의 데이터 유형으로 변환됩니다.1. 사용 가능한 기타 모든 구성요소 매개변수 1...구성요소 또한 암시적으로 comp 유형으로 변환됩니다. 1. DECODE는 NULL 값을 다른 NULL 값과 동일하게 취급합니다. expr1이 NULL이고 comp3이 NULL이고 comp2가 NULL이 아니면 iftrue3이 반환됩니다. 몇 가지 예를 살펴보겠습니다.

쿼리 1: 듀얼에서 decode(1234, 123, '123 is a match')를 선택합니다.

쿼리 2: 듀얼에서 decode(1234, 123, '123은 일치', '일치 없음')을 선택합니다.

쿼리 3: 선택 decode('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' false') 이중에서;

쿼리 1은 값 1234와 123을 비교합니다. 두 값이 같지 않으므로 iftrue1은 무시되고 iffalse 값이 정의되지 않았으므로 NULL이 반환됩니다. 요청 2는 iffalse 값이 정의된다는 점을 제외하면 요청 1과 동일합니다. 1234는 123과 같지 않으므로 iffalse – '일치 없음'을 반환합니다. 3번째 질의는 매개변수 값이 검색값과 일치하는지 확인합니다. 매개변수 comp1 및 comp2는 'search'와 동일하지 않으므로 iftrue1 및 iftrue2의 결과를 건너뜁니다. 요소 comp3(매개변수 위치 6)의 세 번째 비교 연산에서 일치 항목이 발견되고 'true3'과 동일한 iftrue3(매개변수 7)의 값이 반환됩니다. 일치하는 항목이 발견되었으므로 더 이상 계산이 수행되지 않습니다. 즉, comp4(매개변수 8)의 값이 expr1과도 일치한다는 사실에도 불구하고 이전 비교에서 일치 항목이 발견되었으므로 이 표현식은 계산되지 않습니다.

CASE 표현

모든 3세대 및 4세대 프로그래밍 언어는 케이스 구성을 구현합니다. DECODE 함수와 마찬가지로 CASE 표현식을 사용하면 if-then-else 논리를 구현할 수 있습니다. CASE 표현식을 사용하는 데는 두 가지 옵션이 있습니다. 간단한 CASE 표현식은 한 번 비교할 소스 요소를 설정한 다음 필요한 모든 테스트 조건을 나열합니다. 복합(검색) CASE는 각 조건에 대해 두 명령문을 모두 평가합니다.

CASE 표현식에는 세 가지 필수 매개변수가 있습니다. 표현식 구문은 유형에 따라 다릅니다. 간단한 CASE 표현식의 경우 다음과 같습니다.

CASE 검색_expr

WHEN 비교_expr1 THEN iftrue1

)

TRUNC 함수는 소수점 m자리까지 잘린 숫자 n을 반환합니다. m 매개변수는 지정되지 않을 수 있습니다. 이 경우 n은 정수로 잘립니다.

SELECT TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

듀얼에서

함수 SIGN(n)

SIGN 함수는 숫자의 부호를 결정합니다. n이 양수이면 함수는 1을 반환합니다. n이 음수이면 -1을 반환합니다. 0과 같으면 0이 반환됩니다. 예를 들면 다음과 같습니다.

SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3 선택

듀얼에서

이 함수의 흥미로운 특징은 0으로 나누는 오류를 일으키지 않고 m을 0과 동일하게 전송할 수 있다는 것입니다.

기능 POWER(n,m)

POWER 함수는 숫자 n을 m으로 거듭제곱합니다. 정도는 분수 및 음수가 될 수 있으며 이는 이 기능의 기능을 크게 확장합니다.

선택 전원(10, 2) X1, 전원(100, 1/2) X2,

힘(1000, 1/3) X3, 힘(1000, -1/3) X4

듀얼에서

X1 X2 X3 X4
100 10 10 0,1

어떤 경우에는 이 함수를 호출할 때 예외가 발생할 수 있습니다. 예를 들어:

전력 선택(-100, 1/2) X2

듀얼에서

이 경우 음수의 제곱근을 계산하려고 시도하면 ORA-01428 "Argument out of range" 오류가 발생합니다.

기능 SQRT(n)

이 함수는 숫자 n의 제곱근을 반환합니다. 예를 들어:

SQRT(100) X 선택

듀얼에서

EXP(n) 및 LN(n) 함수

EXP 함수는 e의 n제곱을 증가시키고 LN 함수는 n의 자연 로그를 계산합니다(n은 0보다 커야 함). 예:

선택 EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

선거가 다가오고 있습니다. 이는 오늘 우리가 주지사를 선출한다는 의미입니다. 또는 오히려 후보자가 다음 라운드에 진출하는 데 장벽을 설정하십시오. 하지만 먼저 용어를 정의해야 합니다.

SQL에서 보장된 선택이란 무엇입니까?테이블에 대한 쿼리 조건이 필드를 변수와 비교한다고 가정해 보겠습니다. 이 변수의 값에 따라 쿼리는 테이블의 행을 반환할 수도 있고 반환하지 않을 수도 있습니다. 변수 값이 삭제되어 테이블의 행이 반환되지 않는 경우 이 경우 미리 결정된 왼쪽 결과가 특별히 생성되어야 합니다. 즉, 어떤 경우에도 일반 요청은 무언가를 반환하도록 보장되어야 합니다. 용어 자체는 여기에서 따온 것입니다. 그러나 값이 있는 하나의 단순한 셀 대신 완전한 문자열을 반환해야 한다는 사실로 인해 작업이 복잡해집니다.

중앙선거관리위원회의 자료를 소개합니다. 1차 투표는 이런 결과로 끝났습니다

t(id, 이름, 직업, 투표)를 사용하여 테이블 선거를 생성합니다(이중 조합에서 1, "Incorruptible Amoral Chistorukovich", "prosecutor", 9867 선택, 모두 2, "Effective Budget Osvoilovich", "businessman", 8650 선택). 이중 결합 전체 선택 3, "Truthful Chtodat Napisailovich", "신문 편집자", 이중 결합에서 745 모두 4 선택, "Beautiful Lucifera Feoktistona", "Abbess", 이중 결합에서 234 모두 선택 5, "Khrensgory Ktotakoy Niktogneznaevich", " 시골 학교 교사", 이중에서 3) t에서 *를 선택; 테이블 선택 변경 기본 키(id) 추가;
후보자가 다음 라운드에 진출할지 여부를 결정하는 초기 쿼리는 매우 간단합니다.
투표가 있는 선거에서 *를 선택 > :바운드
진입 장벽이 8,000표라고 가정해보자. 이 숫자를:bound와 결합하면 다음을 얻습니다.

하지만 참가 기준이 10,000, 즉 최대 투표 수보다 많은 경우 어떻게 될까요? 그러면 위의 후보 중 누구도 다음 라운드에 진출하지 못할 것이 분명합니다. 이 경우 독재 정권이 수립되고 고양이 대령이 자동으로 해당 지역의 주지사가 됩니다. 다음은 이를 사용할 수 있는 몇 가지 방법입니다.

방법 1.자체 집계된 UNION ALL 테이블

t를 사용하여 (투표 > :바운드인 선거에서 * 선택) ID, 이름, 직업, t 조합에서 투표 선택 모두 0, "Colonel", "cat", null을 선택하고 count(*) = 0인 투표 순서를 갖는 t에서 null 설명

방법 2. DUAL을 사용한 UNION ALL 테이블
t를 다음과 같이 (투표 > :바운드인 선거에서 * 선택) id, 이름, 직업, t 조합에서 투표 선택 모두 0, "Colonel", "cat", 존재하지 않는 이중에서 null 선택(t에서 null 선택) 순서 투표 기준 설명

방법 3. DUAL을 사용한 LEFT JOIN 테이블
nvl(e.id, 0) id, nvl2(e.id, e.name, "Colonel") 이름, nvl2(e.id, e.profession, "cat") 직업, 듀얼 d 왼쪽에서 e.votes 선택 e.votes에서 선거에 참여하세요 >
테이블에 고유한 NOT NULL 필드가 없는 경우
nvl2(e.rowid, e.id, 0) id, nvl2(e.rowid, e.name, "Colonel") 이름, nvl2(e.rowid, e.profession, "cat") 직업, e.votes 선택 이중 d 왼쪽에서 e.votes의 선거 e에 참여 > :bound order by e.votes desc

방법 4.고양이와 모델.
선택 ID, 이름, 직업, 투표가 있는 선거에서 투표 > :바운드 모델 차원(rownum rn) 측정값(id, 이름, 직업, 투표) 규칙(이름 = nvl2(id, 이름, "Colonel"), 직업 = nvl2 (id, 직업, "cat"), id = nvl(id, 0)) 투표순 desc

아래는 10,000이라는 너무 높은 배리어로 바인딩했을 때 보장되는 결과입니다.

초기 막대를 8000으로 설정하면 이러한 쿼리도 올바르게 작동한다는 것이 분명합니다.

지금은 여기까지입니다. 캐릭터 이름과 실제 인물 사이의 모든 유사점은 무작위로 간주됩니다.

다른 일반적인 SQL 문제에 대한 해결 방법은 다음을 참조하세요.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: