반응형
Notice
Recent Posts
Recent Comments
Link
Today
Total
07-05 05:44
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
관리 메뉴

iOS 개발 기록 블로그

Python으로 오라클의 nvl, decode 함수 구현해보기 본문

Python

Python으로 오라클의 nvl, decode 함수 구현해보기

crazydeer 2022. 3. 12. 22:01
반응형

nvl

SQL(오라클)의 nvl 함수를 파이썬으로 구현해보겠습니다.

SQL 예시로 아래와 같습니다.

 

SELECT ename, nvl(comm, 0)

  FROM emp;

 

emp라는 테이블에서 comm(커미션)이 null인 사원은 0으로 null이 아니면 comm을 출력하는 문장입니다.

 

Python으로 구현해보면

 

def nvl(val1, val2):

  if val1 is "":

    return val2

  return val1

 

import csv

f = open("emp_comm.csv 테이블이 있는 경로", "r")

emp_csv = csv.reader(f)

for emp in emp_csv:

  print(emp[1], nvl(emp[6], 0))  #emp[6]은 comm이 있는 열

 

위와 같이 작성할 수 있습니다.

 

 

decode

SQL의 decode 함수를 파이썬으로 구현해봅시다.

decode 함수는 if else 함수와 흡사하게 동작합니다.

아래 보기와 같이 실행했을때 decode함수와 같이 동작하도록 구현해보겠습니다.

 

보기)

import csv

 

f = open("csv파일 있는 경로", "r")

emp_csv = csv.reader(f)

for emp in emp_csv:

  print(emp[1], decode(emp[7], 10, 3000, 0))

 

답)

def decode(val1, a, b, c):

  if type(a) == int:

    val1 = int(val1)

  if val1 is a:

    return b

  return c

 

특정 값 val1이 a조건이면 b를 출력하고 그렇지 않으면 c를 출력하는 함수입니다.

반응형