SQL Server에서는 문자열에서 숫자만 추출하기 위해서는 SUBSTRING, PATINDEX 함수를 사용하여 숫자 부분을 자르거나, TRANSLATE 함수를 사용하여 문자를 공백으로 치환하여 숫자만 추출하는 방법이 있다. MSSQL에서는 REGEXP_REPLACE 같은 정규식 함수가 없기 때문에 위의 방법을 사용하거나, 문자열의 추출하는 사용자 함수를 생성하여 숫자를 추출해야 한다. 아래의 예제는 문자열에 하나의 숫자만 존재할 경우 유효한 방법이니 이점을 유의하여 참고하기 바란다. 목차문자열 자르기로 숫자를 추출하는 방법문자 치환을 사용하여 숫자를 추출하는 방법 문자열 자르기로 숫자를 추출하는 방법WITH SampleData AS ( SELECT 'cc_7000' AS StrVal UN..
SQL Server에서 특정 기준의 소계 및 합계를 구할 때는 GROUPING SETS를 사용하면 쉽게 해결된다. GROUPING SETS는 ROLLUP과 CUBE 보다 더 다양한 합계를 구할 수 있으며 조금 더 기능이 강력하다고 생각하면 된다. 그러나 처음 사용할 때는 조금 복잡하다고 생각될 수 있지만, 괄호 사용법에 대해서 조금만 이해한다면 크게 어렵지 않게 사용할 수 있다. GROUPING SETS 사용법 합계, 총합계 구하기 SELECT job , SUM(sal) FROM emp WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN') GROUP BY GROUPING SETS(job, ()) GROUPING SETS는 그룹 칼럼을 입력하면 해당 칼럼별(job) 합계가 ..
SQL Server에서 모든 경우의 합계를 구할 때는 CUBE 함수를 사용하면 된다. 일반적인 합계를 구할 때는 SUM 함수를 사용하지만, 합계와 소계를 동시에 구하기 위해서는 ROLLUP, CUBE, GROUPING SETS 함수를 사용할 수 있다. 합계와 소계를 구하는 3가지 함수는 조금씩 결과가 다르게 출력되니, 상황에 맞게 사용하면 된다. CUBE 함수 사용법 SELECT job , SUM(sal) FROM emp WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN') GROUP BY CUBE(job) 그룹 칼럼 job에 대한 합계가 조회된 결과에 출력된다. 그룹 칼럼이 한 개인 경우 ROLLUP 함수와 동일한 결과가 출력된다. 그러나 그룹 칼럼이 여러 개인 경우 다..
SQL Server에서 공백을 추가하기 위해서는 SPACE 함수와 REPLICATE 함수를 사용할 수 있다. SQL Server 2005 이상을 사용한다면 SPACE 함수를 사용해서 공백을 추가하는 것이 좋으며, REPLICATE 함수를 사용해서도 공백을 추가할 수 있다는 것도 알아두면 좋다. 함수를 사용하지 않고 공백을 직접적으로 문자열에 합칠 수도 있지만 공백의 길이가 긴 경우 공백이 몇 개인지 확인이 쉽지 않기 때문에 함수를 사용할 것을 추천한다. 목차 SPACE 함수로 공백 넣기 REPLICATE 함수로 공백 넣기 SPACE 함수로 공백 넣기 SELECT 'SQL' + SPACE(1) + 'Server' AS [공백1] , 'SQL' + SPACE(2) + 'Server' AS [공백2] , 'S..
SQL Server에서 조회된 데이터에 순번을 매기기 위해서는 ROW_NUMBER 함수를 사용하면 된다. ROW_NUMBER 함수는 분석 함수이기 때문에 OVER 절과 함께 사용해야 한다. ROW_NUMBER 함수와 비슷한 순위를 구할 수 있는 RANK 함수도 존재한다. 목차 순번 매기기 그룹별 순번 매기기 정렬 사용 시 주의사항 순번 매기기 SELECT ename , job , sal , ROW_NUMBER() OVER(ORDER BY sal DESC) AS rownum FROM emp WHERE job IN ('MANAGER', 'SALESMAN') ROW_NUMBER 함수는 분석 함수이기 때문에 OVER 절과 함께 사용해야 한다. OVER 절 내부 ORDER BY 절에 순번을 매길 기준 칼럼을 작성..
SQL Server에서 순위를 구하기 위해서는 RANK 함수, DENSE_RANK 함수를 사용하면 된다. 두 함수의 사용방법은 동일하지만 순번을 매기는 방법이 조금 차이가 있으니 주의해서 사용해야 한다. RANK, DENSE_RANK 함수는 분석함수이기 때문에 OVER절과 함께 사용해야 한다. 목차 순위 구하기 그룹별 순위 구하기 정렬(ORDER BY) 사용 시 주의사항 순위 구하기 RANK 함수 사용법 SELECT ename , sal , RANK() OVER(ORDER BY sal DESC) AS rank_sal FROM emp WHERE job IN ('ANALYST', 'SALESMAN') 순위함수는 OVER 절과 함께 사용해야 하며 OVER 절 내부의 ORDER BY 절에 순위 칼럼을 지정하면 ..
SQL Server에서 패턴(정규식)으로 문자열의 위치를 찾을 때는 PATINDEX 함수를 사용하면 된다. 단순 문자열로 위치를 찾을 때는 CHARINDEX 함수를 사용하면 되며, 패턴으로 문자열 위치를 찾을 때는 PATINDEX 함수를 사용하면 된다. PATINDEX 함수를 사용하면 패턴을 사용하여 숫자, 영문자, 한글, 특수문자 등을 찾을 수 있으며, 정규식과 유사한 패턴을 사용하지만 일반적인 정규식은 아니라는 것은 인지하고 있어야 한다. 목차 PATINDEX 기본 사용법 PATINDEX 와일드카드(패턴) 사용법 PATINDEX 기본 사용법 SELECT PATINDEX('%SQL%', 'Microsoft SQL Server 2022') PATINDEX('%찾을문자열%', '대상문자열') 찾을 문자열 ..
SQL Server에서 해당 날짜의 요일(weekday)을 구하거나 년, 월, 일 추출 또는 분기를 구할 때는 DATEPART 함수를 사용하면 된다. DATEPART 함수와 거의 유사한 DATENAME 함도 있으며, DATEPART 함수와 DATENAME 함수의 차이는 결과를 정수로 반환하느냐 문자열로 반환하느냐의 차이라고 생각하면 된다. (요일과 월을 추출하는 부분만 다름) 목차 날짜 요일 구하기 년, 월, 일 추출하기 시, 분, 초 추출하기 분기 구하기 일 년 기준으로 일수 구하기 일 년 기준으로 몇 주인지 구하기 [MSSQL] DATENAME 함수 사용법 SQL Server에서 날짜 형식에서 년, 월, 일을 분리하거나 해당 날짜의 요일(weekday), 분기 등을 구하기 위해서는 DATENAME 함..
SQL Server에서 소수점 이하의 값을 절사(버림)를 하기 위해서는 FLOOR 함수를 사용하면 된다. 다른 시스템의 TRUNC, FIX 함수와 비슷한 기능을 수행한다고 생각하면 된다. FLOOR 함수는 입력된 값보다 작거나 큰 최대 정수를 반환하는 함수이며, 이 기능을 활용하여 소수점을 절사 하기 때문에 정확히 이해하고 사용하는 것이 좋다. 목차 소수점 절사, 버림 방법 (FLOOR 함수) 소수점을 절사 하는 다양한 방법 FLOOR 함수를 사용 시 주의사항 소수점 절사, 버림 방법 (FLOOR 함수) SELECT FLOOR(123.567) FLOOR 함수를 사용하여 소수점 이하의 값을 절사(버림)를 할 수 있다. FLOOR 함수는 입력된 값보다 작거나 같은 최대 정수를 반환한다. 입력된 값이 양수인 ..
SQL Server에서 소수점을 반올림하기 위해서는 ROUND 함수를 사용하며, 소수점을 올림 하기 위해서는 CEILING 함수를 사용한다. ROUND 함수를 사용할 때 주의할 점은 소수점 자릿수 항목을 생략하고 사용하면 오류가 발생하기 때문에 소수점 모두 반올림할 경우 소수점 자릿수에 '0'을 입력해야 오류가 발생하지 않는다. 목차 소수점 반올림 방법 (ROUND 함수) 소수점 올림 방법 (CEILING 함수) 소수점 반올림 방법 (ROUND 함수) SELECT ROUND(123.567, 0) , ROUND(123.567, 1) , ROUND(123.567, 2) ROUND('수치값', '반올림 자릿수') 소수점 이하에서 해당 자릿수 까지 5 이상의 값을 반올림한다. ROUND 함수를 사용할 때 ROU..