sql 10

[SQL] 문자열 뒤집기 (REVERSE)

REVERSE SQL에서 문자열을 다룰 때 사용하는 함수 중 하나로, 전달받은 문자열의 시작과 끝을 반전시킨 문자열을 반환한다. 2023.06.07 - [SQL] 문자열을 split한 마지막 값 가져오기와 같은 작업을 할 때 사용할 수 있다. 사용법 REVERSE(string) -- 예시 SELECT REVERSE('SQL Tutorial'); 실행 결과 | REVERSE('SQL Tutorial') | | ----------------------- | | lairotuT LQS | 참고 문서 https://www.w3schools.com/sql/func_sqlserver_reverse.asp

Database 2023.06.15

[SQL] 문자열을 split한 마지막 값 가져오기

개요 SQL에서 split 함수를 이용해 구분자로 문자열을 잘랐다. 근데 프로그래밍 언어와 달리 자른 문자열 리스트에서 마지막 값을 가져오려고 -1을 사용하면 의도대로 동작하지 않았다. 어떤 방식으로 쿼리를 작성해야 하는지 적어둔다. 예시 테이블 예시로 어떤 파일들의 경로가 저장된 테이블이 있다고 하자. 이 데이터에서 경로를 제외한 파일의 이름만 가져오고 싶다. | uri | | ---------------------------------------------------- | | Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx | | OurStory/MeettheFoodieandtheMD.aspx | | OurMenu.aspx | DDL 더보기 CREATE ..

Database 2023.06.07

[SQL] 정규식 관련 함수

개요 SQL을 이용해 문자열의 포함여부 등을 확인할 때는 LIKE 문을 사용한다. 조건에 해당하는 문자열이 여럿인 경우, OR절로 연결해서 사용하기 때문에 쿼리문이 길어질 수 있다. (LIKE 문은 IN과 함께 사용할 수 없다.) 이런 경우 정규식을 사용하면 보다 간결한 쿼리문을 작성할 수 있다. 이 글에서는 정규식 관련 함수를 정리한다. REGEXP_MATCH REGEXP_MATCH는 문자열과 패턴이 일치하는지 확인하고 일치한 문자열 배열을 반환한다. flags는 함수의 동작을 제어하는데 예로 들어 i가 들어가는 경우 대소문자 구분을 하지 않는다. REGEXP_MATCHES(source_string, pattern [, flags]) -- 예시 SELECT REGEXP_MATCHES('Learning ..

Database 2023.06.06

[SQL] 문자열 자르기 (SPLIT_PART/SUBSTRING/LEFT/RIGHT)

개요 2023.06.01 - [SQL] 문자열 합치기 (||/CONCAT/CONCAT_WS)에서 여러 문자열을 합쳐보았다. 이번 글에서는 자르는 방법도 정리한다. 표준인 ANSI SQL을 기준으로 하고 싶어, PostgreSQL을 사용해 정리한다. SPLIT_PART SPLIT_PART 함수는 문자열을 지정한 구분자로 자르고 n번째 하위 문자열을 반환한다. SPLIT_PART(string, delimiter, position) -- 예시 SELECT SPLIT_PART('A,B,C', ',', 2); 실행 결과 | split_part | | ---------- | | B | SUBSTRING / SUBSTR SUBSTRING는 특정 위치로부터 지정한 길이의 문자열을 반환한다. 길이는 생략할 수 있으며, ..

Database 2023.06.02

[SQL] 문자열 합치기 (||/CONCAT/CONCAT_WS)

개요 최근 SQL을 통해 문자열을 많이 다루게 될 것 같아 관련 내용을 정리해두고자 한다. 이 글에서는 문자열을 합치는 방법에 대해서 정리한다. 표준인 ANSI SQL을 기준으로 하고 싶어, PostgreSQL을 사용해 정리한다. || || 연산자를 사용하면 두 개 이상의 문자열을 열결하여 하나의 문자열로 반환한다. 만약 연결할 문자열에 NULL이 포함되어 있으면 NULL을 반환한다. str_1 || str_2 -- 예시 SELECT 'Concatenation' || ' ' || 'Operator' AS result, 'Concat with ' || NULL AS contain_null_result ; 실행 결과 | result | contain_null_result | | ----------------..

Database 2023.06.01

[MySQL] 이전 행, 다음 행 조회 (LAG/LEAD)

개요 2023.05.14 - [MySQL] 윈도우 함수 - OVER 2023.05.15 - [MySQL] 집계 함수와 OVER 절 2023.05.16 - [MySQL] 순위 함수 (RANK) 2023.05.17 - [MySQL] 추출 함수 (FIRST_VALUE/LAST_VALUE) 위 글에서 윈도우 함수에 대해 정리하고 있는데, 이 글에서는 윈도우 함수 중 비집계 함수에 해당하는 LAG, LEAD 함수에 대해 정리한다. 예시 데이터 아래와 같이 사원 이름(employee_name), 부서(department), 시간(hours)으로 구성된 초과근무 시간 테이블을 예시 데이터로 사용한다. DDL 더보기 CREATE TABLE overtime ( employee_name varchar(50) NOT NUL..

Database 2023.05.18

[MySQL] 추출 함수 (FIRST_VALUE/LAST_VALUE/NTH_VALUE)

개요 2023.05.14 - [MySQL] 윈도우 함수 - OVER 2023.05.15 - [MySQL] 집계 함수와 OVER 절 2023.05.16 - [MySQL] 순위 함수 (RANK) 위 글에서 윈도우 함수에 대해 정리하고 있는데, 이 글에서는 윈도우 함수 중 비집계 함수에 해당하는 추출 함수에 대해 정리한다. 예시 데이터 아래와 같이 사원 이름(employee_name), 부서(department), 시간(hours)으로 구성된 초과근무 시간 테이블을 예시 데이터로 사용한다. DDL 더보기 CREATE TABLE overtime ( employee_name varchar(50) NOT NULL, department varchar(50) NOT NULL, hours int NOT NULL, PRI..

Database 2023.05.17

[MySQL] 순위 함수 (RANK)

개요 MySQL 8.0부터는 Window 함수를 지원하면서 보다 편리하게 순위를 매길 수 있게 되었다. 순위 함수는 Window 함수 중 비집계 함수이며 OVER 절과 함께 사용해야 한다. MySQL에서 지원하는 순위함수는 RANK, DENSE_RANK, PERCENT_RANK, ROW_NUMBER 정도가 있다. 예시 데이터를 이용해 순위 함수의 사용 방법을 정리한다. 예시 데이터 아래의 사원 번호(empno), 사원 이름(ename), 직업(job), 급여(sal) 데이터로 구성된 테이블을 예시로 사용한다. DDL 더보기 CREATE TABLE emp ( empno int, ename varchar(30), job varchar(30), sal int ) INSERT INTO emp VALUES (79..

Database 2023.05.16

[MySQL] 집계 함수와 OVER 절

개요 2022.06.10 - [MySQL] MAX, MIN, COUNT, DISTINCT와 2023.05.14 - [MySQL] 윈도우 함수 - OVER 글에서 집계 함수와 윈도우 함수에 대해서 간단히 알아보았다. 이 글에서는 집계 함수와 OVER 절을 함께 사용하는 예시에 대해 알아보려고 한다. MySQL을 기준으로 확인해본다. 집계 함수 MySQL에서 제공하는 집계 함수는 다음과 같다. (참고 : 12.19.1 Aggregate Function Descriptions) 이름 설명 AVG() 인수의 평균값을 반환 BIT_AND() 반환 비트 AND BIT_OR() 반환 비트 OR BIT_XOR() 비트별 XOR 반환 COUNT() 반환된 행 수를 반환합니다. COUNT(DISTINCT) 다양한 값의 수..

Database 2023.05.15

[MySQL] 윈도우 함수 - OVER

윈도우 함수 (Window Function) 행과 행 간의 관계를 정의하기 위해 제공되는 함수이다. 데이터베이스를 다룰 때는 GROUPY BY와 COUNT, SUM과 같은 집계 함수를 많이 사용하는데, 윈도우 함수도 GROUP BY와 비슷하게 데이터를 그룹화하여 순위, 합계, 평균 등을 구할 수 있다. 다만 집계된 결과만 보여주는 GROUP BY와 다르게 기존 데이터에 집계된 데이터를 추가하여 보여준다. 즉, GROUP BY는 결과 데이터의 행 수가 줄어드는 반면 윈도우 함수를 사용하면 결과 데이터 행 수가 줄어들지 않는다. MySQL의 경우 8.0부터 윈도우 함수를 지원한다. 이 글에서는 간단히 윈도우 함수의 구조와 사용 예시를 정리한다. 구조 윈도우 함수는 아래와 같은 구조로 사용한다. FUNCTIO..

Database 2023.05.14
1