본문 바로가기

반응형

MS-SQL

(57)
[MSSQL] MERGE를 사용하여 데이터 입력/수정/삭제를 한 번에 처리 데이터 입력/수정/삭제를 한 번에 처리할 수 있는 MERGE에 대해 알아보자 MERGE 단일 문에서 여러 DML(INSERT, UPDATE, DELETE) 작업을 수행할 수 있다. 즉, 여러 개의 개별 DML문을 단일 문으로 대체할 수 있다. 작업이 하나의 문 내에서 수행되면서, 데이터가 처리되는 횟수가 최소화되고 쿼리 성능이 향상된다. MERGE는 다음과 같이 사용한다. MERGE 변경될테이블명 AS A USING 기준테이블명 AS B ON A.컬럼명 = B.컬럼명 WHEN MATCHED THEN 일치할때쿼리문 WHEN NOT MATCHED THEN 불일치할때쿼리문 아래와 같이 기준 테이블의 칼럼을 지정할 수 있다. 또한, MATCHED, NOT MATCHED와 함께 추가 조건 지정도 가능하다. MER..
[MSSQL] SPLIT 문자열 구분자로 자르기 Split 함수 만들기 (문자열을 특정 구분자로 잘라보자) DECLARE @pString VARCHAR(8000) = '120.20.2212.142' -- 문자열 DECLARE @pDelimiter CHAR(1) = '.' -- 구분자 ;WITH E1(N) AS -- row 10 ( SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ), E2(N) AS (SELECT 1 FROM E1 a, E1 b), -- row 100 E4(N) AS..
[MSSQL] TEXT 타입에 REPLACE 함수 적용 문자열 변경 함수 REPLACE를 TEXT 타입 칼럼에도 적용 REPLACE 함수는 다음과 같이 사용한다 SELECT REPLACE(COL1, '원래문자', '변경할문자') FROM TABLE_A 여기서 만약, COL1 컬럼의 타입이 TEXT 타입일 경우 아래와 같은 오류메세지를 반환할 것이다. 메시지 8116, 수준 16, 상태 1, 줄 34 replace 함수의 인수 1에 대한 인수 데이터 형식 text이(가) 잘못되었습니다. 해결 방법 SELECT REPLACE(CONVERT(VARCHAR(MAX),COL1), '원래문자', '변경할문자') FROM TABLE_A 데이터타입 변경 함수 CONVERT를 이용하여 COL1 칼럼을 VARCHAR 타입으로 변경 후 사용해준다. 예제 SELECT text_c..
[MSSQL] 테이블 '#테이블명'이(가) 없거나 권한이 없어서 삭제할 수 없습니다. 테이블 '#테이블명'이(가) 없거나 권한이 없어서 삭제할 수 없습니다. 오류 해결 1. 임시 테이블 #TEMP1을 생성하고 쿼리 실행 후 마지막에 테이블을 반납하는 프로시저 A 생성 2. 프로시저B에서 프로시저 A를 호출하는 쿼리를 작성 => 오류 발생 테이블 '#TEMP1'이(가) 없거나 권한이 없어서 삭제할 수 없습니다. 프로시저 A에서 임시 테이블 #TEMP1을 반납하는 부분에서 문제가 발생한 것으로 보인다. -> 해당 테이블이 존재하는지 체크 후 삭제하도록 하자 첫 번째 방법 IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE name = '#TEMP1') BEGIN DROP TABLE #TEMP1 END 두 번째 방법 IF OBJECT_ID('tempdb....
[MSSQL] TOP with UPDATE, DELETE (N개의 행만 수정, 삭제) UPDATE TOP (n) 혹은 DELTE TOP (n) 를 이용하여 n 개의 행만 수정해보자 일반적으로 UPDATE문은 다음과 같이 사용한다. UPDATE 테이블명 SET 컬럼명 = '값' WHERE 조건 이때 WHERE 조건에 해당하는 모든 행은 SET 에서 설정한 대로 모두 변경된다. 그러나, 조건에 맞는 행 중에서 N개의 행만 UPDATE 해주고 싶을 때 UPDATE TOP (n) 테이블명 SET 컬럼명 = '값' WHERE 조건 이렇게 쿼리를 작성해주면 조건에 해당하는 모든 행 중에서 N개의 행만 UPDATE가 적용된다. 예제1) UPDATE 컬럼 수정 UPDATE TOP(2) table_ggmouse SET age = 99 예제2) DELETE 컬럼 삭제 DELETE TOP(2) table_g..

반응형