SQL
-
따옴표 또는 쌍따옴표가 포함된 문자열을 DB API로 적재하기Tips 2023. 10. 24. 18:50
python에서는 문자열을 표현하는 기호로 쌍따옴표(")와 따옴표(')를 모두 사용하므로, 문자열 안에 쌍따옴표나 따옴표가 포함될 경우 알아서 escape 기호(\)를 사용하거나 문자열 표현자를 쌍따옴표 또는 따옴표를 선택해서 사용함으로써 인식한다. 하지만 SQL에서 쌍따옴표는 컬럼명을 의미하므로, 문자열에는 ' 만 사용할 수 있고, 문자열 내부에 '가 포함되는 경우 escape 기호를 사용해서 넣으면 된다. 부딪힌 상황은 외부 api를 사용해 받은 응답값을 DB에 저장하는데 해당 응답 문자열에 ' 또는 "가 포함되는 경우가 있었고,(예시 - "이름은 'abc'입니다.") 해당 문자열을 executeone 함수로 insert했을 때 syntax error가 발생했다. 해결 방법은 두 가지가 있는데, 첫 ..
-
몫과 나머지 구하기Data Engineering/SQL 2021. 8. 9. 00:04
몫은 FLOOR 함수, 나머지는 MOD 또는 REMAINDER함수로 구할 수 있다. 어떤 DB에서는 %도 사용 가능한 것 같긴 한데.. Oracle이 표준이니까 일단 함수로 공부하는 것이 좋을 듯 하다. - Oracle에서는 %연산자가 없다 - MSSQL에는 %연산자가 사용 가능하다고 한다 MOD함수와 REMAINDER 함수는 결과값은 일치하나 내부적으로 연산 방법이 다르다고 한다. 속도면에서는 큰 차이가 없다고 하니 아무거나 쓰면 될 것 같다. -15를 3으로 나누고 싶다면 나눌 값은 15, 나누는 값은 3 - 몫 구하기 FLOOR(나눌 값/나누는 값) - 나머지 구하기 MOD(나눌 값,나누는 값) REMAINDER(나눌 값,나누는 값)
-
문자열 합치기 - CONCAT과 ||Data Engineering/SQL 2021. 8. 8. 23:55
SQL에서 문자열을 합치는 방법은 CONCAT 함수를 사용하는 것과 ||(Double vertical bars)를 사용하는 방법 두 가지가 있다. 여러 개의 문자열을 합치고자 할 때, 각 DB별로 방법이 다를 수 있기 때문에 주의해야한다. ORACLE, MYSQL 제외 DB SELECT CONCAT(first_name, ' ' ,last_name) FROM EMPOYEES SELECT first_name || ' ' || last_name FROM EMPOYEES 두 코드의 실행 결과가 동일하다. ORACLE 오라클의 CONCAT함수는 매개변수를 두 개만 받는다. 따라서 두 개 이상의 값/행을 연결하기 위해서는 중첩 concat을 사용하거나 ||를 사용해야한다. 어느 행에 결측치가 존재할 경우, 결측치를..