BETWEEN구문 데이터베이스를 사용하다 보면 ~어디서부터 ~어디까지의 데이터를 출력하고 싶은 경우가 있습니다. 대표적인 경우가 날짜죠 ~일부터 ~일까지의 데이터를 출력해라!! 물론 X보다 크고 Y보다 작은 데이터를 찾아라 이런 식으로도 할 수 있지만 더 간결하고 유용하게 사용할 수 있는 문법인 BETWEEN 절을 소개합니다. 사용법 SELECT * FROM [테이블명] WHERE [칼럼명] BETWEEN [조건1] AND [조건2] 예제 --나이(AGE)가 20살~25살까지의 사원조회 SELECT * FROM MY_TABLE WHERE AGE BETWEEN 20 AND 24 --사원번호(NO_EMP)가 '0000'~'0010'까지이거나 나이(AGE)가 30살~40살인 사원조회 SELECT * FROM ..
IN절 데이터베이스를 사용하다 보면 이런 경험들 있으실 겁니다. XX이거나 XX이거나 XX이거나 XX이거나 이런 경우요 물론 OR을 활용해서 처리를 할 수도 있지만 IN이라는 좀 더 간편한 방식이 있습니다. 사용법 SELECT * FROM [테이블명] WHERE [칼럼명] IN ( [조건1],[조건2],[조건3] ) 예제 --나이가 20살,24살,26살인 사원 조회 SELECT * FROM MY_TABLE WHERE AGE IN(20,24,26) --사원번호가 '0000','0004','0008'이고 나이가 20살 24살 28살인 사원 조회 SELECT * FROM MY_TABLE WHERE NO_EMP IN('0000','0004','0008') AND AGE IN(20,24,28) [MS_SQL] L..
LIKE구문 쿼리문 WHERE절에 주로 사용되며 부분적으로 일치하는 칼럼을 찾을때 사용됩니다. SELECT * FROM [테이블명] WHERE LIKE [조건] _ : 글자숫자를 정해줌(EX 컬럼명 LIKE '홍_동') % : 글자숫자를 정해주지않음(EX 컬럼명 LIKE '홍%') 사용법 --A로 시작하는 문자를 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A%' --A로 끝나는 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A' --A를 포함하는 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A%' --A로 시작하는 두글자 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A_'..
프로그래밍 언어 중에서 조건에 따라 작업방식을 달리 할 수 있는 조건문이라는 것이 있습니다. 대표적인 문법이 IF문과 CASE문인데요. MSSQL에서도 조건절인 CASE문과 IF문을 지원하니 한번 활용해보시는 것도 좋을 것 같습니다. CASE WHEN 가장 많이 쓰이는 조건문입니다. 조건에 따라 값을 지정해 주는 역할을 합니다. --CASE사용법-- CASE WHEN 조건절 THEN 참일때 값 ELSE 거짓일때 값 END 컬럼명 --테이블(MY_TABLE)에서 성별(GENDER)이 001이면 여, 그게아니면 남자로 검색-- SELECT DISTINCT GENDER, CASE WHEN GENDER = '001' THEN '여' ELSE '남' END AS 성별 FROM MY_TABLE 다중 CASE WHE..
데이터베이스를 하다 보면 가끔 엉뚱한 부분에 공백이 들어가서 애먹는 경우가 많습니다. 대표적으로는 decleare 한 변수에 varchar값을 계속해서 + 시킬 때 공백이 들어가는데요. 이렇게 예상치 못한 공백 값이 들어갔을 때 공백을 효율적으로 제거해주는 함수가 있습니다. 이번 포스팅에서는 MSSQL 공백 제거 함수 LTRIM, RTRIM에 대해 알아봅니다. LTRIM 해당 문자열의 왼쪽에 있는 공백을 제거해주는 함수 사용법 --문법-- LTRIM(문자열) --예제-- DECLARE @SQL NVARCHAR(200) SET @SQL = ' SPACE' LTRIM(@SQL) 문자열을 합 칠경 우 왼쪽에 공백이 생기는데 이를 제거할 때 요긴하게 사용됨 DECLARE @NUM INT, @STR NVARCHA..
MSSQL에서는 날짜를 여러 가지 형태로 가공할 수 있는 함수들을 많이 제공하고 있습니다. 이번 포스팅에서는 대표적인 날짜 함수(GETDATE, DATEADD, DATEPART, DATEDIFF)의 사용법에 대해서 알아보도록 하겠습니다. GETDATE GETDATE함수는 현재 컴퓨터에 설정되어있는 시스템 시간을 불러와주는 함수입니다. 2018-03-31 오전 01:40:30 위와 같이 GETDATE() 함수는 년월일은 물론이거니와 분, 초 까지도 구해줍니다. 하지만 모든 사용자들이 위와 같은 형식으로 사용하지는 않겠죠. 여기서 우리는 우리가 표시할 시간이나 날짜만 적절히 뽑아 올 수도 있고 날짜 형태를 바꿔서 출력할 수도 있습니다. 사용법 --현재 날짜 출력-- SELECT GETDATE() AS 시스템..
데이터베이스를 사용하다보면 테이블안에있는 데이터의 특정 문자들만 치환 해줘야 하는 일이 생깁니다. 이번 포스팅에서는 특정 문자열을 바꿔주는 REPLACE함수와 STUFF함수에 대해서 알아보도록 하겠습니다. REPLACE 지정된 문자열 값을 특정 문자열로 바꿔주는 함수입니다. 사용법 --문법-- REPLACE('문자열','치환예정문자','치환할문자') --예시-- REPLACE('ABCDEFG','DEF','XXX') 예제 --MY_TABLE에서 이름(NM_KOR)을 이씨를 김씨으로 바꿔서 출력-- SELECT REPLACE(NM_KOR,'이','김')AS 사원명 FROM MY_TABLE STUFF 지정된 문자열의 시작위치와 크기를 지정하여 원하는 문자로 치환하는 함수입니다. 사용법 --문법-- STUFF..
MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT함수와 CAST함수입니다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용합니다. 쓰는 방식만 조금 다르고 하는 일은 같습니다. 자세한 설명은 해당 사이트에 있으니 참조하시기 바랍니다. Conver함수와 Cast함수 사용링크 Convert 개인적으로 가장 많이 사용하는 데이터 변환 함수라고 생각합니다. 날짜 변환하는데도 유용하게 사용 가능합니다. 참고로 부동 소수점 또는 숫자에서 정수로 변환할 때 CONVERT() 함수는 결과를 자르고 다른 변환일 경우에는 반올림합니다. 사용법 --문법-- CONVERT(data_type[(length)], expression[style]) --예시-- SELECT CONVERT(NVARC..
LEFT Left함수는 문자열을 받아서 왼쪽부터 원하는 길이만큼 자르는 함수이며 주민등록번호만으로도 생년월일을 구하거나 이름을 잘라서 성만 출력하는 등 다양한 방법으로 활용 가능합니다. 사용법 --문법-- LEFT(문자열,길이) --예시-- LEFT(NAME,2) 예제 --테이블(MY_TABLE)에서 이름(NM_KOR)을 잘라 성만 출력-- SELECT LEFT(NM_KOR,1) AS 이름 FROM MY_TABLE RIGHT RIGHT함수는 LEFT함수와 기능은 같지만 방향만 다른 함수입니다. RIGHT함수는 문자열을 받아서 오른쪽부터 원하는 길이만큼 자르는 함수이며 LEFT함수와 마찬가지로 다양하게 사용이 가능합니다. 사용법 --문법-- RIGHT(문자열,길이) --예시-- RIGHT(NAME,3) 예..
ISNULL함수 ISNULL함수는 Microsoft SQL Server의 내장함수이며 칼럼이 NULL값일 경우 다른값으로 대체할 수 있는 기능이 있습니다. 데이터베이스를 사용하다보면 파라미터로 NULL값이 오거나 칼럼안에 NULL값이 들어있는 등 경우에 따라 NULL값을 적절히 처리해줘야하는 경우가 많은데 이럴때 유용하게 쓰일 수 있는 함수입니다. 사용법 --문법-- ISNULL(칼럼,칼럼이 NULL일경우 대체할 값) --예시-- ISNULL(Colum,0) (ISNULL(@PARAMETER,'')='') 예제 1. 부서(DEPT)를 검색하되 부서가 NULL값이면 '부서없음'으로 검색하기 SELECT ISNULL(DEPT,'부서없음') AS DPET FROM table 2. 파라미터와 동일한 이름(NAM..
커서란? 행 단위 작업을 효율적으로 하기 위한 방식으로 테이블에서 여러 개의 행을 조회한 후 쿼리의 결과를 한 행씩 처리하는 방식입니다. SELECT 한 결과(행 집합)를 반복 작업해줘야 할 경우 유용하게 사용 가능 한 방식입니다. 커서의 특징 1. 커서는 내장 SQL 문의 수행 결과로 반환될 수 있는 복수의 튜플들을 액세스 할 수 있도록 해주는 개념입니다. 2. 커서는 질의 수행 결과로 반환되는 첫 번째 튜플에 대한 포인터로 생각할 수 있습니다. 3. 커서를 사용하여 질의 결과로 반환될 수 있는 튜플들을 한 번에 하나씩 차례대로 처리할 수 있습니다. 커서 관련 명령어 DECLARE : 커서를 정의하는 등 커서에 관련된 선언을 하는 명령입니다. OPEN : 커서가 질의 결과의 첫 번째 튜플을 포인트 하도..
SET NOCOUNT란? 쿼리문 또는 프로시저의 영향을 받은 행 수를 나타내는 메시지가 결과 집합의 일부로 반환되지 않도록 하는 것 구문 : SET NOCOUNT {ON/OFF} 사용하는 이유 MSSQL에서 프로시저를 만 들 경 우 프로시저의 속도(성능)에 대해서 생각을 안 할 수 없습니다. 프로시저의 속도가 프로그램의 속도에 밀접한 관련이 있는 만큼 프로시저의 성능에 대해 초점을 맞추고 쿼리문을 짜야합니다. 이번 포스팅에서는 SET NOCOUNT라는 함수를 사용하여 쿼리 문의 속도를 향상하는 방법에 대해 알아보겠습니다. MSSQL에서 프로시저를 만들고 실행을 해보면 위와 같은 메시지를 보신 적이 있으실 텐데요. 위 메시지는 INSERT나 UPDATE DELETE처럼 테이블에 영향을 주게 되면 출력이 됩..
WHILE문 MS SQL에서도 반복문을 지원합니다. 반복문을 사용해서 변수에 문자열을 계속 붙이거나 숫자를 더하는 등 다양한 방식으로 응용하여 사용할 수 있습니다. 반복문을 사용하는 다양한 예제를 포스팅합니다. 1. 숫자더하기 DECLARE @NUM INT, @SUM INT,@TIME INT --변수선언 SET @NUM = 1 SET @SUM = 0 SET @TIME = 10 WHILE @NUM