본문 바로가기
반응형

IT/Database112

[Mysql/Oracle] 공백제거 trim / REGEXP_REPLACE TRIM() 함수 우선 trim 함수에 대해서는 다 알것이다. 앞뒤 공백을 제거해주는데 column 의 타입이 varchar 타입일 경우 trim 이 간혹 제대로 안먹을때가 있다. (탭, 기타 스페이스 등) 그럴 경우엔 아래와 같이 설정하면 정상적으로 먹힌다. TRIM(Char(9) FROM 컬럼명) REGEXP_REPLACE 함수 오라클에서 사용하긴 하지만 mysql 에서도 적용은 되는것 같다. 여러개인 패턴을 찾아서 하나로 변경을 해주는것이다. 오라클 10g 부터 적용이 된 기능이고 사용법은 아래와 같다. SELECT REGEXP_REPLACE([컬럼], '^\t+', '') FROM [테이블]; 공백 뿐 아니라 다양한 정규식을 변경하는데 사용 가능하고 자세한 내용은 아래 사이트 참고 바란다. htt.. 2024. 2. 20.
[Mysql] if / else 문 mysql 에서 보여지는 값에 대해서 조건문을 걸수가 있는데 if / else 문으로 제어를 한다. 문법은 아래와 같다. IF ( 대상 컬럼 , 참일때 값, 거짓일때 값) 간단하게 예시 코드는 아래와 같다. SELECT colA, IF (colA=="a" , 1, 2) as colB FROM TABLE; 위 쿼리에 대한 결과는 아래와 같다. colA colB a 1 b 2 엑셀의 IF 함수와 동일한 기능을 한다. 2024. 2. 17.
[Mysql] SELECT ... INTO ... 구문 SELECT INTO 구문은 다른 DBMS를 사용하는 사람들이면 좀 생소할수있으나 Mysql에서 procedure 등에서 자주 사용되는 구문이다. 사용 문법은 아래와 같다. BEGIN DECLARE a int; DECLARE b int; DECLARE c int; SELECT colA, colB, colC INTO 'a','b','c', FROM TABLENAME; -- TABLENAME에서 조회한 값들을 위에서 선언한 지역변수 a, b, c에 각각 넣는다. END$$ SELECT 한 값들을 특정 변수에 넣기 위해서 사용된다. 2024. 2. 15.
[MySQL] Packet for query is too large 에러 mysql 에 insert 작업중 에러가 나서 확인해보니 아래와 같은 에러였다. com.mysql.jdbc.PacketTooBigException: Packet for query is too large (9,000,277 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable. 기본 설정된 패킷 사이즈값보다 큰 값이 들어와서 그렇다. max_allowed_packet은 서버로 질의하거나 받게 되는 패킷의 최대 길이를 나타내는 시스템 변수 이다. 변경 방법은 2가지 이다. 커맨드라인에서 변경 -> root 계정으로 mysql 을 접속 후 SET GLOBAL max_allowed_pack.. 2024. 2. 10.
파티션 테이블 적용, 조회 방법 이전 포스팅에서 테이블 파티션에 대해서 다룬 글이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 파티션 생성부터 특정 파티션 조회에 대해서 다뤄볼 것이다. 파티션 생성 create table ptable1 ( col1 varchar2(8), col2 number ) tablespace users partition by range (col1) ( partition p202401 values less than ('202402'), partition p202402 values less than ('202403'), partition p202403 values less than ('202404'), partition p202404 values less than ('202405'), partition p2.. 2024. 2. 3.
[Oracle] 오라클 PARTITION BY 사용법 정리 (group by 와 차이) 쿼리를 사용할때 partition by 를 사용하여 특정 그룹으로 묶어서 조회, 연산을 할수 있다. group by 와 비슷할순 있으나 차이에 대해서도 아래 기술할 것이다. 먼저 사용법은 아래와 같다. 분석함수([칼럼]) OVER(PARTITION BY 칼럼1, 칼럼2... [ORDER BY 절] [WINDOWING 절]) SUM 함수 SELECT empno , ename , job , sal , SUM(sal) OVER(PARTITION BY job) FROM emp WHERE job IN ('MANAGER', 'SALESMAN') ORDER BY job 그 밖에 COUNT, MAX, MIN, SUM, AVG 함수도 SUM 과 비슷하게 사용이 가능하다. ROW_NUMBER 함수 SELECT empno .. 2024. 2. 2.
[Oracle] EXTRACT 함수 관련 Oracle 에서 EXTRACT 라는 함수가 존재한다. 날짜 정보를 분리해서 각각 새로운 형태로 추출을 해주는 함수이다. 설명으로 들어서는 이해가 잘 안갈수도 있으니 직접 예시를 보여주면 ​ 테이블에 날짜 변수가 담긴 X로부터 특정한 날짜요소를 추출하여 새로운 컬럼으로 반환하는 SQL 쿼리 문장의 형태는 다음과 같다. SELECT EXTRACT ('Option' FROM X) as DATE_OPTION FROM TABLE; '날짜요소'에 투입하는 항목에 따라, 날짜 데이터로부터 얻을 수 있는 값이 달라지게 됩니다. Option 에 존재하는 날짜 요소는 아래와 같다. SQL 쿼리에서의 날짜요소 표시 날짜 정보 YEAR 연도 MONTH 월 DAY 일 HOUR 시 MINUTE 분 SECOND 초 즉 아래 쿼리.. 2024. 1. 30.
instr(), like 차이 및 비교 database 에서 컬럼 내 특정 문자열을 찾기위해서 많은 방법이 있다. 대부분 like 를 사용하겠지만, instr 이라는 함수와 함께 알아볼 것이다. 사용법은 둘다 간단하다. 컬럼 내에서 test라는 문구를 찾으려면 like 사용 SELECT * FROM TABLE WHERE COL LIKE '%test%'; instr 사용 SELECT * FROM TABLE WHERE INSTR(COL, 'test'); 현재 쿼리에서는 둘 다 당연히 인덱스를 활용하지는 못한다. 하지만 like문에서는 'test%' 로 설정을 해서 test로 시작하는 ~~ 을 구할수가 있다. 둘의 속도 비교 해보았고 결론은 like 'ABC%' 일때 : 앞에 %가 없을때는 like 사용 like '%ABC%' or '%ABC' 일.. 2024. 1. 29.
[Oracle] Unix Time To oracle sql (소수점 까지 f 로 ) Unix Time To 일반 시간 ​ SELECT TO_CHAR(TO_DATE('19700101090000', 'YYYYMMDDHH24MISS') +( UNIXTIME/86400),'MM/DD HH24:MI:SS') FROM TABLENAME; ​ 만약 milli seconds 까지 있다면 86400 이 아닌 86400000으로 나눠야한다. ​ 일반 시간 To Unix Time ​ SELECT TO_NUMBER( DATETIME-TO_DATE('01-Jan-1970 00:00:00', 'DD-Mon-YYYY HH24:MI:SS'))*24*60*60 FROM TALBENAME; 만약 milliseconds 까지 있다면 (3자리 경우) TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:M.. 2024. 1. 25.
반응형