λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

Null값을 μΉ˜ν™˜ν•΄μ£ΌλŠ” (NVL,NVL2) ν•¨μˆ˜ μ‚¬μš©λ²• & 예제

by 5566 2023. 9. 17.

1. NVL ν•¨μˆ˜λž€?

NVL ν•¨μˆ˜λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ‘œ, NULL 값을 λ‹€λ₯Έ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

2. NVL ν•¨μˆ˜μ˜ μ‚¬μš©λ²•

NVL ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같은 ν˜•μ‹μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€:

NVL(싀행할식, μΉ˜ν™˜κ°’)
  • 싀행할식: NULL인지 ν™•μΈν•˜κ³ μž ν•˜λŠ” κ°’ λ˜λŠ” ν‘œν˜„μ‹μž…λ‹ˆλ‹€.
  • μΉ˜ν™˜κ°’: 싀행할식이 NULL인 경우 λŒ€μ²΄λ‘œ μ‚¬μš©ν•  κ°’μž…λ‹ˆλ‹€.

3. NVL ν•¨μˆ˜μ˜ 예제

λ‹€μŒμ€ NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€:

SELECT name, NVL(age, 'Unknown') AS replaced_age
FROM employees;

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” employees ν…Œμ΄λΈ”μ˜ age 열을 μ‘°νšŒν•˜λŠ”λ°, λ§Œμ•½ ageκ°€ NULL이라면 'Unknown'으둜 λŒ€μ²΄λ˜μ–΄ 좜λ ₯λ©λ‹ˆλ‹€.

4. NVL2 ν•¨μˆ˜λž€?

NVL2 ν•¨μˆ˜λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ‘œ, NULL 값에 따라 λ‹€λ₯Έ κ°’ 두 개λ₯Ό λ°˜ν™˜ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

5. NVL2 ν•¨μˆ˜μ˜ μ‚¬μš©λ²•

NVL2 ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같은 ν˜•μ‹μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€:

NVL2(싀행할식, λ°˜ν™˜κ°’1, λ°˜ν™˜κ°’2)
  • 싀행할식: NULL인지 ν™•μΈν•˜κ³ μž ν•˜λŠ” κ°’ λ˜λŠ” ν‘œν˜„μ‹μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’1: 싀행할식이 NULL이 μ•„λ‹Œ 경우 λ°˜ν™˜λ  κ°’μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’2: 싀행할식이 NULL인 경우 λ°˜ν™˜λ  κ°’μž…λ‹ˆλ‹€.

6. NVL2 ν•¨μˆ˜μ˜ 예제

λ‹€μŒμ€ NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€:

SELECT name, NVL2(department, 'Assigned', 'Not Assigned') AS assignment_status
FROM employees;

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” employees ν…Œμ΄λΈ”μ˜ department 열을 μ‘°νšŒν•˜λŠ”λ°, λ§Œμ•½ departmentκ°€ NULL이 μ•„λ‹ˆλΌλ©΄ 'Assigned'둜, NULL이라면 'Not Assigned'둜 λŒ€μ²΄λ˜μ–΄ 좜λ ₯λ©λ‹ˆλ‹€.

1. NVL ν•¨μˆ˜λž€?

NVL ν•¨μˆ˜λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ‘œ, NULL 값을 λ‹€λ₯Έ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. NULL은 λ°μ΄ν„°μ˜ λΆ€μž¬λ₯Ό λ‚˜νƒ€λ‚΄λŠ” νŠΉλ³„ν•œ κ°’μœΌλ‘œ, 값이 μ—†μŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€. NVL ν•¨μˆ˜λŠ” NULL 값을 λ‹€λ₯Έ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜μ—¬ λ°μ΄ν„°μ˜ 무결성을 μœ μ§€ν•˜κ³ , 데이터 처리 μž‘μ—…μ„ 효율적으둜 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

NULL 값은 쿼리 κ²°κ³Ό, ν•¨μˆ˜μ˜ 인수, ν…Œμ΄λΈ” μ—΄ λ“±μ—μ„œ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. NVL ν•¨μˆ˜λŠ” μ΄λŸ¬ν•œ NULL 값을 λ‹€λ₯Έ μœ νš¨ν•œ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜μ—¬ 좜λ ₯ 결과에 μ›ν•˜λŠ” 값을 ν‘œμ‹œν•©λ‹ˆλ‹€. NVL ν•¨μˆ˜λŠ” 싀행할식(인수)이 NULL인 경우 μΉ˜ν™˜κ°’μœΌλ‘œ λŒ€μ²΄λ˜μ–΄ 결과둜 λ°˜ν™˜λ©λ‹ˆλ‹€.

NVL ν•¨μˆ˜μ˜ 기본적인 ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

NVL(싀행할식, μΉ˜ν™˜κ°’)
  • 싀행할식: NULL인지 ν™•μΈν•˜κ³ μž ν•˜λŠ” κ°’ λ˜λŠ” ν‘œν˜„μ‹μž…λ‹ˆλ‹€.
  • μΉ˜ν™˜κ°’: 싀행할식이 NULL인 경우 λŒ€μ²΄λ‘œ μ‚¬μš©ν•  κ°’μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, employees ν…Œμ΄λΈ”μ—μ„œ age μ—΄μ˜ 값이 NULL이라면 'Unknown'으둜 λŒ€μ²΄ν•˜μ—¬ 좜λ ₯ν•˜κ³  μ‹Άλ‹€λ©΄, λ‹€μŒκ³Ό 같이 NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

SELECT name, NVL(age, 'Unknown') AS replaced_age
FROM employees;

μ΄λ ‡κ²Œ μ‚¬μš©ν•˜λ©΄, NULL인 경우 'Unknown'으둜 λŒ€μ²΄λœ 값을 좜λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. NVL ν•¨μˆ˜λŠ” λ°μ΄ν„°μ˜ 처리λ₯Ό μœ μ—°ν•˜κ²Œ ν•˜κ³  NULL 값에 λŒ€ν•œ λŒ€μ‘μ„ 효과적으둜 μ œκ³΅ν•˜μ—¬ λ°μ΄ν„°μ˜ 무결성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. NVL ν•¨μˆ˜μ˜ μ‚¬μš©λ²•

NVL ν•¨μˆ˜λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ‘œ, NULL 값을 λ‹€λ₯Έ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜μ˜ μ‚¬μš©λ²•μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€:

NVL(싀행할식, μΉ˜ν™˜κ°’)
  • 싀행할식은 NULL인지 ν™•μΈν•˜κ³ μž ν•˜λŠ” κ°’ λ˜λŠ” ν‘œν˜„μ‹μž…λ‹ˆλ‹€.
  • μΉ˜ν™˜κ°’μ€ 싀행할식이 NULL인 경우 λŒ€μ²΄λ‘œ μ‚¬μš©ν•  κ°’μž…λ‹ˆλ‹€.

NVL ν•¨μˆ˜λŠ” μ‹€ν–‰ν• μ‹μ˜ 값이 NULL인지 ν™•μΈν•˜κ³ , λ§Œμ•½ NULL인 경우 μΉ˜ν™˜κ°’μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. 싀행할식이 NULL이 μ•„λ‹Œ κ²½μš°μ—λŠ” μ‹€ν–‰ν• μ‹μ˜ 값을 κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, employees ν…Œμ΄λΈ”μ—μ„œ age μ—΄μ˜ 값을 μ‘°νšŒν•˜λŠ”λ°, λ§Œμ•½ ageκ°€ NULL이라면 'Unknown'으둜 λŒ€μ²΄ν•˜μ—¬ 좜λ ₯ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

SELECT name, NVL(age, 'Unknown') AS replaced_age
FROM employees;

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” employees ν…Œμ΄λΈ”μ˜ age 열을 μ‘°νšŒν•˜κ³  NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL인 κ²½μš°μ—λŠ” 'Unknown'으둜 좜λ ₯λ©λ‹ˆλ‹€.

NVL ν•¨μˆ˜λŠ” λ°μ΄ν„°μ˜ 처리λ₯Ό μœ μ—°ν•˜κ²Œ ν•˜κ³ , NULL 값에 λŒ€ν•œ λŒ€μ‘μ„ 효과적으둜 μ œκ³΅ν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ NULL 값은 데이터 λΆ€μž¬λ₯Ό λ‚˜νƒ€λ‚΄λ©°, 일뢀 μž‘μ—…μ—μ„œλŠ” 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ NULL 값을 λ‹€λ₯Έ μœ νš¨ν•œ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜μ—¬ λ°μ΄ν„°μ˜ 무결성을 μœ μ§€ν•˜κ³  처리 μž‘μ—…μ„ μ›ν™œν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. NVL ν•¨μˆ˜μ˜ 예제

NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 λ‹€λ₯Έ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜λŠ” 예제λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, employees ν…Œμ΄λΈ”μ—λŠ” μ‚¬μ›μ˜ 이름과 λ‚˜μ΄κ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 일뢀 μ‚¬μ›μ˜ λ‚˜μ΄ μ •λ³΄λŠ” λˆ„λ½λ˜μ–΄ NULL κ°’μœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€. 이 κ²½μš°μ— NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 λ‹€λ₯Έ κ°’μœΌλ‘œ λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ μΏΌλ¦¬λŠ” employees ν…Œμ΄λΈ”μ—μ„œ μ‚¬μ›μ˜ 이름과 λ‚˜μ΄λ₯Ό μ‘°νšŒν•˜κ³ , λ‚˜μ΄κ°€ NULL인 κ²½μš°μ—λŠ” 'Unknown'으둜 λŒ€μ²΄ν•˜μ—¬ 좜λ ₯ν•©λ‹ˆλ‹€:

SELECT name, NVL(age, 'Unknown') AS replaced_age
FROM employees;

μœ„μ˜ 쿼리의 κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

이름 λŒ€μ²΄λœ λ‚˜μ΄
John 25
Kate 30
Mike Unknown
Julia 40

μœ„μ˜ μ˜ˆμ œμ—μ„œ λ³Ό 수 μžˆλ“―μ΄, employees ν…Œμ΄λΈ”μ—μ„œ age μ—΄μ˜ 값이 NULL인 경우 NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 'Unknown'으둜 λŒ€μ²΄λ˜μ–΄ 좜λ ₯λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ λ°μ΄ν„°μ˜ 무결성을 μœ μ§€ν•˜κ³  μ›ν•˜λŠ” 값을 ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 외에도 NVL ν•¨μˆ˜λŠ” λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, NVL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 λ‹€λ₯Έ μ—΄μ˜ κ°’μœΌλ‘œ λŒ€μ²΄ν•˜κ±°λ‚˜, μˆ˜μ‹μ„ μ‚¬μš©ν•˜μ—¬ λ³΅μž‘ν•œ μΉ˜ν™˜κ°’μ„ 생성할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. NVL ν•¨μˆ˜λŠ” 데이터 처리λ₯Ό μœ μ—°ν•˜κ²Œ ν•˜κ³ , 효율적으둜 NULL 값을 λ‹€λ£° 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

4. NVL2 ν•¨μˆ˜λž€?

NVL2 ν•¨μˆ˜λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ‘œ, NULL 값을 λ‹€λ₯Έ 두 κ°’ 쀑 ν•˜λ‚˜λ‘œ λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜μ˜ μ‚¬μš©λ²•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

NVL2(싀행할식, λ°˜ν™˜κ°’1, λ°˜ν™˜κ°’2)
  • 싀행할식은 NULL인지 ν™•μΈν•˜κ³ μž ν•˜λŠ” κ°’ λ˜λŠ” ν‘œν˜„μ‹μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’1은 싀행할식이 NULL이 μ•„λ‹Œ 경우 λ°˜ν™˜ν•  κ°’μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’2λŠ” 싀행할식이 NULL인 경우 λ°˜ν™˜ν•  κ°’μž…λ‹ˆλ‹€.

NVL2 ν•¨μˆ˜λŠ” μ‹€ν–‰ν• μ‹μ˜ 값이 NULL인지 ν™•μΈν•˜κ³ , 싀행할식이 NULL인 경우 λ°˜ν™˜κ°’2λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 싀행할식이 NULL이 μ•„λ‹Œ κ²½μš°μ—λŠ” λ°˜ν™˜κ°’1을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

NVL ν•¨μˆ˜μ™€ 달리 NVL2 ν•¨μˆ˜λŠ” NULL일 λ•Œμ™€ NULL이 아닐 λ•Œμ˜ λ°˜ν™˜κ°’μ„ λ”°λ‘œ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‹€μ–‘ν•œ 상황에 따라 λ‹€λ₯Έ 값을 λ°˜ν™˜ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, employees ν…Œμ΄λΈ”μ˜ salary μ—΄μ—λŠ” μ‚¬μ›μ˜ κΈ‰μ—¬ 정보가 μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 일뢀 μ‚¬μ›μ˜ κΈ‰μ—¬ μ •λ³΄λŠ” NULL κ°’μœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€. 이 κ²½μš°μ— NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ μΏΌλ¦¬λŠ” employees ν…Œμ΄λΈ”μ—μ„œ μ‚¬μ›μ˜ 이름과 κΈ‰μ—¬λ₯Ό μ‘°νšŒν•˜κ³ , κΈ‰μ—¬κ°€ NULL인 κ²½μš°μ—λŠ” 'No data available'κ³Ό 'Salary available'을 각각 좜λ ₯ν•©λ‹ˆλ‹€:

SELECT name, NVL2(salary, 'Salary available', 'No data available') AS replaced_salary
FROM employees;

μœ„μ˜ 쿼리의 κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

이름 λŒ€μ²΄λœ κΈ‰μ—¬
John 1000
Kate 2000
Mike No data available
Julia 3000

μœ„μ˜ μ˜ˆμ œμ—μ„œ λ³Ό 수 μžˆλ“―μ΄, employees ν…Œμ΄λΈ”μ—μ„œ salary μ—΄μ˜ 값이 NULL인 경우 NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 'No data available'을 좜λ ₯ν•˜κ³ , NULL이 μ•„λ‹Œ κ²½μš°μ—λŠ” 'Salary available'을 좜λ ₯ν•©λ‹ˆλ‹€.

NVL2 ν•¨μˆ˜λŠ” 쑰건에 따라 λ‹€λ₯Έ 값을 λ°˜ν™˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λ©°, λ°μ΄ν„°μ˜ μ²˜λ¦¬μ— μœ μš©ν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ NULL 값을 λ‹€λ£° λ•Œ μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

5. NVL2 ν•¨μˆ˜μ˜ μ‚¬μš©λ²•

NVL2 ν•¨μˆ˜λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ‘œ, NULL 값을 λ‹€λ₯Έ 두 κ°’ 쀑 ν•˜λ‚˜λ‘œ λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜μ˜ μ‚¬μš©λ²•μ— λŒ€ν•΄ μƒμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ‚¬μš©λ²•

NVL2 ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같은 ꡬ문을 κ°–μŠ΅λ‹ˆλ‹€:

NVL2(싀행할식, λ°˜ν™˜κ°’1, λ°˜ν™˜κ°’2)
  • 싀행할식은 NULL인지 ν™•μΈν•˜κ³ μž ν•˜λŠ” κ°’ λ˜λŠ” ν‘œν˜„μ‹μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’1은 싀행할식이 NULL이 μ•„λ‹Œ 경우 λ°˜ν™˜ν•  κ°’μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’2λŠ” 싀행할식이 NULL인 경우 λ°˜ν™˜ν•  κ°’μž…λ‹ˆλ‹€.

NVL2 ν•¨μˆ˜λŠ” μ‹€ν–‰ν• μ‹μ˜ 값이 NULL인지 ν™•μΈν•˜κ³ , 싀행할식이 NULL인 경우 λ°˜ν™˜κ°’2λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 싀행할식이 NULL이 μ•„λ‹Œ κ²½μš°μ—λŠ” λ°˜ν™˜κ°’1을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

예제

λ‹€μŒμ€ NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 μ²˜λ¦¬ν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€. employees ν…Œμ΄λΈ”μ—λŠ” μ‚¬μ›μ˜ 이름과 κΈ‰μ—¬ 정보가 μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 일뢀 μ‚¬μ›μ˜ κΈ‰μ—¬ μ •λ³΄λŠ” NULL κ°’μœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€. 이 κ²½μš°μ— NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ μΏΌλ¦¬λŠ” employees ν…Œμ΄λΈ”μ—μ„œ μ‚¬μ›μ˜ 이름과 κΈ‰μ—¬λ₯Ό μ‘°νšŒν•˜κ³ , κΈ‰μ—¬κ°€ NULL인 κ²½μš°μ—λŠ” 'No data available'κ³Ό 'Salary available'을 각각 좜λ ₯ν•©λ‹ˆλ‹€:

SELECT name, NVL2(salary, 'Salary available', 'No data available') AS replaced_salary
FROM employees;

μœ„μ˜ 쿼리의 κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

이름 λŒ€μ²΄λœ κΈ‰μ—¬
John 1000
Kate 2000
Mike No data available
Julia 3000

μœ„μ˜ μ˜ˆμ œμ—μ„œ λ³Ό 수 μžˆλ“―μ΄, employees ν…Œμ΄λΈ”μ—μ„œ salary μ—΄μ˜ 값이 NULL인 경우 NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 'No data available'을 좜λ ₯ν•˜κ³ , NULL이 μ•„λ‹Œ κ²½μš°μ—λŠ” 'Salary available'을 좜λ ₯ν•©λ‹ˆλ‹€.

NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 μ²˜λ¦¬ν•¨μœΌλ‘œμ¨, λ°μ΄ν„°μ˜ 처리λ₯Ό μœ μ—°ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ NULL 값을 λ‹€λ£° λ•Œ NVL2 ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ μ›ν•˜λŠ” κ°’μœΌλ‘œ λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

6. NVL2 ν•¨μˆ˜μ˜ 예제

NVL2 ν•¨μˆ˜λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜λ‘œ, NULL 값을 λ‹€λ₯Έ 두 κ°’ 쀑 ν•˜λ‚˜λ‘œ λŒ€μ²΄ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이제 NVL2 ν•¨μˆ˜μ˜ 예제λ₯Ό 톡해 μ‹€μ œ μ‚¬μš© 방법을 μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

예제λ₯Ό μœ„ν•΄ employees ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜κ² μŠ΅λ‹ˆλ‹€. 이 ν…Œμ΄λΈ”μ—λŠ” μ‚¬μ›μ˜ 이름과 κΈ‰μ—¬ 정보가 μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 일뢀 μ‚¬μ›μ˜ κΈ‰μ—¬ μ •λ³΄λŠ” NULL κ°’μœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€. 이 κ²½μš°μ— NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ employees ν…Œμ΄λΈ”μ˜ 데이터 μ˜ˆμ œμž…λ‹ˆλ‹€:

이름 κΈ‰μ—¬
John 1000
Kate 2000
Mike NULL
Julia 3000

이제 NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 μ²˜λ¦¬ν•˜λŠ” 예제λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. λ‹€μŒ μΏΌλ¦¬λŠ” employees ν…Œμ΄λΈ”μ—μ„œ μ‚¬μ›μ˜ 이름과 κΈ‰μ—¬λ₯Ό μ‘°νšŒν•˜κ³ , κΈ‰μ—¬κ°€ NULL인 κ²½μš°μ—λŠ” 'No data available'κ³Ό 'Salary available'을 각각 좜λ ₯ν•©λ‹ˆλ‹€:

SELECT name, NVL2(salary, 'Salary available', 'No data available') AS replaced_salary
FROM employees;

μœ„μ˜ 쿼리λ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€:

이름 λŒ€μ²΄λœ κΈ‰μ—¬
John 1000
Kate 2000
Mike No data available
Julia 3000

μœ„μ˜ κ²°κ³Όμ—μ„œ λ³Ό 수 μžˆλ“―μ΄, NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ salary μ—΄μ˜ 값이 NULL인 κ²½μš°μ—λŠ” 'No data available'을 좜λ ₯ν•˜κ³ , NULL이 μ•„λ‹Œ κ²½μš°μ—λŠ” 'Salary available'을 좜λ ₯ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 예제λ₯Ό 톡해 NVL2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ NULL 값을 μ²˜λ¦¬ν•  수 있으며, λ°μ΄ν„°μ˜ 처리λ₯Ό μœ μ—°ν•˜κ²Œ μ‘°μž‘ν•  수 μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ NULL 값을 λ‹€λ£° λ•Œ NVL2 ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ μ›ν•˜λŠ” κ°’μœΌλ‘œ λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€