SQL Server에서 문자열을 치환하기 위해서는 REPLACE 함수를 자주 사용한다. 그러나 문자열의 특정 영역을 치환 또는 마스킹 킹 처리를 할 때는 STUFF 함수를 사용하면 조금 더 편리하게 할 수 있다. 또한 여러 개의 문자를 다중치환할 때는 TRANSLATE 함수를 사용하면 쿼리문을 조금 더 짧고 명료하게 작성할 수 있다. 목차 문자열 치환 방법 3가지 REPLACE 함수를 사용하여 문자열 치환 방법 STUFF 함수를 사용하여 문자열 치환 방법 TRANSLATE 함수를 사용하여 문자열 치환 방법 문자열 치환 방법 3가지 SELECT REPlACE('MSSQL', 'S', 'X') , STUFF('MSSQL', 2, 2, 'XX') , TRANSLATE('MSSQL', 'S', 'X') 위의 예..
SQL Server에서 문자열을 대문자 또는 소문자로 변환하기 위해서는 UPPER, LOWER 함수를 사용한다. UPPER(문자열) 함수를 사용하면 대문자로 변환되고, LOWER(문자열) 함수를 사용하면 소문자로 변환된다. SQL Server에서는 첫 문자만 대문자로 변환하는 INITCAP 함수는 지원하지 않는다. SSMS 툴의 대문자, 소문자 변환 단축키는 아래를 참고하면 된다. 목차 대문자, 소문자 변환 방법 (단축키 포함) 특정 칼럼의 값을 대문자, 소문자로 변환 대문자, 소문자 구분 없이 LIKE 검색 방법 대문자, 소문자 변환 방법 SELECT UPPER('SQL Server 2022') , LOWER('SQL Server 2022') UPPER 함수를 사용하면 대문자로 변환되고, LOWER 함..
SQL Server에서 문자열이 날짜 형식인지 체크할 때는 ISDATE 함수를 사용하면 된다. 날짜인 경우 '1'을 반환하고, 날짜가 아닌 경우 '0'을 반환한다. ISDATE 함수는 CASE 연산자나 WHERE 절에서 ISDATE(칼럼) = 1로 사용하면 된다. 허용되는 날짜 형식이 여러 가지 있기 때문에 아래의 예제를 참고하면 된다. 목차 날짜 형식 체크 방법 정확한 날짜 형식 부정확한 날짜 형식 ISDATE 함수 활용 문자열을 날짜로 변환 시 TRY 함수 사용 날짜 형식 체크 방법 SELECT ISDATE('2022-12-13') , ISDATE('2022-12-32') , ISDATE('2022년12월13일') ISDATE 함수는 문자열이 날짜 형식인 경우 '1'을 반환하고, 날짜 형식이 아닐 경..
SQL Server에서 문자열이 숫자 형식인지 체크하기 위해서는 ISNUMERIC 함수를 사용한다. 숫자인 경우 '1'을 반환하고 숫자가 아닌 경우 '0'을 반환한다. ISNUMERIC 함수는 조건절에서 ISNUMERIC(칼럼) = 1로 사용하면 된다. 수치 값에서 사용하는 특수 문자는 숫자로 인식하므로 아래를 예제를 참고하면 된다. 목차 숫자인지 체크 방법 양수, 음수 및 통화 기호가 있을 경우 소수점과 천 단위 구분자가 있을 경우 ISNUMERIC 함수 활용 문자열을 숫자로 변환 시 TRY 함수 사용 숫자인지 체크 방법 SELECT ISNUMERIC('1234') , ISNUMERIC('a123') , ISNUMERIC('abcd') ISNUMERIC 함수는 문자열이 숫자인 경우 '1'을 반환하고 숫..
SQL Server에서는 비율, 백분율(%)을 구하기 위해서는 OVER 절을 사용하여 전체 합계를 구한다면 연산을 하면 쉽게 해당 값을 구할 수 있다. 오라클의 RATIO_TO_REPORT 함수와 같은 비율을 구하는 함수가 존재하지 않기 때문에 직접 연산식을 만들어야 한다. 아래의 예제를 충분히 이해하면 쉽게 문제를 해결할 수 있을 것이다. 목차 비율 구하기 백분율(%) 구하기 (활용 예제) 그룹별 백분율(%) 구하기 비율 구하기 SELECT ename , sal , CONVERT(float, sal) / SUM(sal) OVER() AS sal_ratio FROM emp WHERE job = 'SALESMAN' 비율 = 자신의 값 / 전체 합계 CONVER(float, sal) MSSQL에서는 정수(피..
SQL Server에서는 정수와 정수를 나누면 몫만 반환되고 소수점 이하의 값은 반환되지 않는다. 그리고 나머지를 구하기 위해서는 % (나머지) 연산자를 사용하면 되며 MOD 함수는 없다. 정수(피제수)와 정수(제수)를 나눴을 경우 소수점 이하의 값도 반환받길 원한다면 피제수 또는 제수를 실수로 형 변환을 하면 소수점 이하의 값도 반환받을 수 있다. 몫과 나머지 구하기 (정수) SELECT 10 / 3 AS quotient , 10 % 3 AS remainder 피제수(10)와 제수(3)가 모두 정수인 경우 나누기를 하면 몫만 반환된다. (소수점 이하의 값은 반환 안됨) %(나머지) 연산자를 사용하면 나머지 값만 반환할 수 있다. 정수를 나눌 때 소수점 표시하기 SELECT 10.0 / 3 AS resu..
SQL Server에서 평균값을 구하기 위해서는 AVG 함수를 사용하면 된다. AVG 함수를 사용하지 않고 SUM 함수와 COUNT 함수를 사용해도 동일한 평균값을 구할 수 있다. AVG 함수는 평균을 구할 칼럼의 값이 NULL인 경우 집계 대상에서 제외하는 특성이 있으니 이점을 유의하여 함수를 사용해야 한다. 목차 전체 평균 건수 구하기 그룹별 평균 구하기 (GROUP BY 절) 분석함수를 사용하여 평균 구하기 (OVER 절) 전체 평균 건수 구하기 평균 구하기 SELECT AVG(sal) FROM emp WHERE job = 'SALESMAN' 직업(job)이 "SALESMAN"에 해당하는 직원의 평균 급여를 구한다. ( 평균 급여 = 직원 총 급여 합계 / 직원수 ) 평균 구할 때 NULL이 있을 ..
SQL Server에서 데이터 건수를 집계하기 위해서는 COUNT, COUNT_BIG 함수를 사용하면 된다. 일반적으로는 COUNT 함수를 사용하며, 데이터 건수가 21억 건이 넘어간다면 COUNT_BIG 함수를 사용해야 한다. COUNT 함수 인자에 DISTINCT 연산자를 사용하면 해당 칼럼을 중복 제거하여 건수를 집계할 수 있다. COUNT(칼럼명)으로 사용할 경우 해당 칼럼의 값이 NULL인 경우 건수 집계에서 제외되니 주의해야 한다. 목차 전체 데이터 건수 구하기 그룹별 건수 구하기 (GROUP BY 절) 분석함수를 사용하여 건수 구하기 (OVER 절) 전체 데이터 건수 구하기 건수 구하기 SELECT COUNT(*) FROM emp WHERE job = 'SALESMAN' 직업(job)이 "S..
SQL Server에서 순차적 누적 합계를 구하기 위해서는 SUM 함수와 OVER 절을 사용하면 된다. 누적 합산 기준은 OVER 절 내부의 ORDER BY 절 정렬 기준으로 데이터를 정렬하고 순차적으로 합산을 한다. OVER 절의 내부의 ORDER BY 절 기준으로 데이터가 정렬되어서 조회되므로 WHERE 절 하단에 ORDER BY 절을 추가로 기술할 필요가 없다. 목차 순차적 누적 합계 구하기 그룹별 순차적 누적 합계 구하기 순차적 누적 합계 구하기 SELECT empno , ename , job , sal , SUM(sal) OVER(ORDER BY empno) AS sum_sal FROM emp WHERE job IN ('MANAGER', 'SALESMAN') OVER 절과 SUM 함수를 사용하여..
SQL Server에서 합계를 구하기 위해서는 SUM 함수를 사용하면 됩니다. SUM 함수를 사용하여 합계를 구하면 조회된 각 행에 합계를 표시할 수 있으며, 별도의 새로운 행으로 합계를 표시하고 싶을 때는 ROLLUP 구문을 사용할 수 있으며 조회된 데이터 외에 새로운 합계 행이 추가됩니다. ROLLUP 사용법은 하단 링크를 참고하면 됩니다. 목차 전체 데이터 합계 구하기 그룹별 합계 구하기 (GROUP BY 절) 분석함수를 사용하여 합계 구하기 (OVER 절) 전체 데이터 합계 구하기 합계 구하기 SELECT SUM(sal) FROM emp WHERE job = 'SALESMAN' 직업(job)이 "SALESMAN"인 직원의 급여(sal) 총합계 조회한다. SUM() 함수는 수치 값만 합산할 수 있다..