▶[MS-SQL] TEL 전화번호 MASKING 마스킹 -- 함수생성 CREATE FUNCTION [dbo].[FN_MASK_TELNO](@STR VARCHAR(50)) RETURNS VARCHAR(50) AS BEGIN DECLARE @RTNVALUE VARCHAR(50), @STRLEN INT, @POS INT, @VSTR VARCHAR(50); SET @VSTR = REPLACE(REPLACE(@STR, ' ', ''), '-', ''); SET @STRLEN = LEN(@VSTR); IF @STRLEN < 7 BEGIN SET @RTNVALUE = @VSTR; END; ELSE IF @STRLEN = 7 BEGIN SET @RTNVALUE = '***-' + RIGHT(@VSTR, 4); END;..
▶[MS-SQL] E-MAIL 이메일 MASKING 마스킹 -- 함수생성 CREATE FUNCTION [dbo].[FN_MASK_EMAIL] (@STR VARCHAR(50) ) RETURNS VARCHAR(50) AS BEGIN DECLARE @RTNVALUE VARCHAR(50), @STRLEN INT, @POS INT; SET @POS = CHARINDEX('@', @STR); IF @POS = 0 BEGIN SET @RTNVALUE = @STR; END; ELSE BEGIN IF @POS
▶[MS-SQL] NAME 이름 MASKING 마스킹 -- 함수생성 CREATE FUNCTION [dbo].[FN_MASK_NAME] ( @STR VARCHAR(50) ) RETURNS VARCHAR(50) AS BEGIN DECLARE @RTNVALUE VARCHAR(50), @STRLEN INT; IF LEN(@STR) = 2 BEGIN SET @RTNVALUE = LEFT(@STR, 1) + '*'; END; ELSE IF LEN(@STR) >= 3 BEGIN SET @STRLEN = LEN(@STR) - 2; SET @RTNVALUE = LEFT(@STR, 1) + REPLACE(SPACE(@STRLEN), ' ', '*') + RIGHT(@STR, 1); END; ELSE BEGIN SET @R..
▶Table 별 용량 및 Row 수 조회 -- 테이블별 사용 용량 SELECT table_name = convert(varchar(30), min(o.name)) , table_size = ltrim(str(sum(cast(reserved as bigint)) * 8192 / 1024.,15,0) + 'KB') FROM sysindexes i INNER JOIN sysobjects o ON (o.id = i.id) WHERE i.indid IN (0, 1, 255) AND o.xtype = 'U' GROUP BY i.id -- 용량별 소팅 SELECT table_name = convert(varchar(30), min(o.name)) , table_size = convert(int, ltrim(str(s..
메시지 2714, 수준 16, 상태 5, 줄 1 데이터베이스에 'test_table'(이)라는 개체가 이미 있습니다. MSSQL 로 create table 쿼리문을 통하여 테이블을 생성하는 경우가 종종 있습니다. 아래 쿼리문을 통하여 만들면 위와 같은 에러가 날것입니다. 무엇이 문제지 필드를 잘못선언했나 찾아봐도 모르겠습니다. USE [TEST] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TEST_TABLE]( [STR_CD] [varchar](10) NOT NULL, [MOV_1_FROM] [varchar](10) NOT NULL, [MOV_1_TO] [varchar](10) ..
MSSQL 쿼리 최적화 CONVERT의 위력 기존에 잘되던 쿼리가 늦어져서 쿼리 성능에 대한 부분을 찾아보게 되었다. 그중 하나 좋은부분있어서 소개한다 무려 96:4의 비율로 속도가 빨라짐을 느낄수 있다. 주로 날짜형식으로 varchar 인경우 잘되는거 같다. 기본 VARCHAR 는 별 영향이 없는듯.. ▶CONVERT 검색할 값의 데이터 형식을 바꿔주는 것 실제 테이블 컬럼의 데이터 형식과 일치하게 검색하기 -- 기존쿼리 SELECT SD.PRD_CD AS PRD_ID , SUM(SD.SL_QY) AS SALE_QTY FROM POS_SL_ITM SD WITH(READUNCOMMITTED) WHERE SD.STD_DATE BETWEEN DATEADD(M, -1, CONVERT(DATE, '2019-02..
MSSQL 락(lock) 걸린 쿼리 확인하기 정말 이유없이 잘되던 쿼리가 안되는 경우가 있습니다. 이에 확인 가능한 쿼리입니다. ▶EXEC sp_lock LOCK 걸린 spid 검출 MODE 필드에 S로 나오는 것이 정상 MODE 필드에 X로 나오는 것이 LOCK EXEC sp_lock ▶dbcc inputbuffer(20) LOCK 걸린 spid를 입력하면 현재 돌고 있느 쿼리가 출력됩니다. dbcc inputbuffer(20) ▶kill 20 LOCK을 발생시키는 spid를 종료시킵니다. kill 20
[MSSQL] Table 별 용량 및 Row 수 조회 ▶Table 별 용량 및 Row 수 조회 테이블별 사용 용량 용량별 소팅 테이블별 Row 수 -- 테이블별 사용 용량 SELECT table_name = convert(varchar(30), min(o.name)) , table_size = ltrim(str(sum(cast(reserved as bigint)) * 8192 / 1024.,15,0) + 'KB') FROM sysindexes i INNER JOIN sysobjects o ON (o.id = i.id) WHERE i.indid IN (0, 1, 255) AND o.xtype = 'U' GROUP BY i.id -- 용량별 소팅 SELECT table_name = convert(varcha..
MSSQL MERGE (DML을 한번에) ▶MERGE단일 문에서 여러 DML 작업이 가능하다. 데이터 처리되는 횟수도 최소화되고, 쿼리 성능이 향상된다. MERGE INTO 변경할테이블 AS TARGET USING DUAL ON TARGET.STD_DATE = #{STD_DATE} AND TARGET.STR_CD = #{STR_CD} AND TARGET.POS_NO = #{POS_NO} AND TARGET.BILL_NO = #{BILL_NO} AND TARGET.LINE_SEQ = #{LINE_SEQ} WHEN MATCHED THEN -- 일치할때 쿼리문 UPDATE SET STD_DATE = #{STD_DATE} ,STR_CD = #{STR_CD} ,POS_NO = #{POS_NO} ,BILL_NO =..
MSSQL 변수를 활용한 반복문 만들기, (TRY, CATCH 이용) 갑자기 SELECT CONVERT(VARCHAR, getdate(), 1) 이부분이 몇번까지 되는지 알아보고 싶어졌다. 그래서 반복문과 try, catch 문을 같이 활용하여 만들어 보았다. try, catch 를 같이 쓴이유는 없이하면 SELECT CONVERT(VARCHAR, getdate(), 28) 위 쿼리부분등에서 에러나서 반복문이 멈춘다. DECLARE @id INT SET @id = 29 WHILE(@id < 50) BEGIN BEGIN TRY SELECT CONVERT(VARCHAR, getdate(), @id) -- END END TRY BEGIN CATCH -- 아무것도 하기 싫다. END CATCH; SET @id ..
MSSQL GETDATE() CONVERT 변환 ▶CONVERT getdate()를 varchar로 convert 할때, 세번째 인자에 숫자를 넣는데 어디까지 있나 궁금하여 한번 다 돌려보았다 2019년 02월 22일 기준 SELECT CONVERT(VARCHAR, getdate(), 1) -- 02/22/19 SELECT CONVERT(VARCHAR, getdate(), 2) -- 19.02.22 SELECT CONVERT(VARCHAR, getdate(), 3) -- 22/02/19 SELECT CONVERT(VARCHAR, getdate(), 4) -- 22.02.19 SELECT CONVERT(VARCHAR, getdate(), 5) -- 22-02-19 SELECT CONVERT(VARCHAR,..
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |