본문 바로가기

DB/mssql

(37)
[mssql] REPLICATE + SUBSTRING 조합으로 이메일 주소 가리기 mssql 에서 특정문자열 사이에 문자를 채울때나 바꿀때는 REPLICATE + SUBSTRING 조합을 애용하고 있습니다. 아래 예제는 이메일 주소의 @ 앞의 몇자를 * 으로 가리는 예제입니다. DECLARE @email VARCHAR(500) = 'abcd1234@naver.com' SELECT LEFT(@email, 2) + REPLICATE('*', CHARINDEX('@', @email, 1) - 2) + SUBSTRING(@email, CHARINDEX('@', @email, 1), LEN(@email)) -- ab*******@naver.comdemo : http://rextester.com/TJCA78904링크 : [mssql] substring 문자열자르기
[mssql] 숫자에 콤마 붙이기 숫자형에 3자리마다 콤마를 붙이는 스칼라 함수 입니다. CREATE FUNCTION [dbo].[fn_intMoneyWithComma] ( @money INT ) RETURNS VARCHAR(50) AS BEGIN DECLARE @tempMoneyText VARCHAR(50) = NULL SET @tempMoneyText = REPLACE(CONVERT(VARCHAR(50), CAST(@money AS MONEY), 1) , '.00', '') RETURN @tempMoneyText END GO demo : http://rextester.com/GFD80572
[mssql] convert yyyyMMddhhmmss string to datetime DECLARE @stringDatetime CHAR(14) = '20160823160000' -- yyyyMMddhhmmss DECLARE @convertedDatetime DATETIME = NULL SELECT @convertedDatetime = CAST((SUBSTRING(@stringDatetime,1,4) + '-' + SUBSTRING(@stringDatetime,5,2) + '-' + SUBSTRING(@stringDatetime,7,2) + ' ' + SUBSTRING(@stringDatetime,9,2) + ':' + SUBSTRING(@stringDatetime,11,2) + ':' + SUBSTRING(@stringDatetime,13,2)) AS DATETIME) SELECT @c..
[mssql] substring 문자열 자르기 DECLARE @addressCode CHAR(10) = '1147010100' SELECT SUBSTRING(@addressCode, 1,2) AS sidoCode -- 11 , SUBSTRING(@addressCode, 3,3) AS gugunCode -- 470 , SUBSTRING(@addressCode, 6,3) AS dongCode -- 101 , SUBSTRING(@addressCode, 9,2) AS riCode -- 00 demo : http://rextester.com/DHEU53218 mssql 은 시작점이 javascript 나 기타 언어들과 다르게 1부터 시작한다. 링크 : javascript 문자열 자르기
[mssql] 데이터가져오기 플랫파일(txt,csv) 데이터 잘림 처리 - 실행 중 (오류)메시지오류 0xc02020a1: 데이터 흐름 태스크 1: 데이터를 변환하지 못했습니다. 열 "주소"에 대한 데이터 변환 중에 상태 값 4 및 상태 텍스트 "텍스트가 잘렸거나 하나 이상의 문자가 대상 코드 페이지와 맞지 않습니다."이(가) 반환되었습니다. (SQL Server 가져오기 및 내보내기 마법사) 오류 0xc020902a: 데이터 흐름 태스크 1: 잘림이 발생했기 때문에 "출력 열 "주소"(46)"이(가) 실패했으며 "출력 열 "주소"(46)"에서의 잘림 행 처리는 잘림 발생 시 실패하도록 지정되어 있습니다. 해당 구성 요소의 지정한 개체에서 잘림 오류가 발생했습니다. (SQL Server 가져오기 및 내보내기 마법사) 오류 0xc0202092: 데이터 흐름 태스크 1: 파일 ..
[mssql] 테이블의 전체 레코드 수 가져오기 속도향상 USE {{데이터베이스명}} -- 일반 테이블 SELECT [rows] AS [rowCount] FROM sysindexes WHERE id = OBJECT_ID('{{테이블명}}') AND indid
[mssql] insert multi row values INSERT INTO {{테이블}} (Code, CodeName, UpperCode, UpperCodeName, OrderNo, CodeGroup, Available, CodeDescription, Edit_Name, Edit_Date) VALUES (132, 'A1',0, NULL,0, NULL, 1, NULL, 'system', getdate()), (13101, 'A2',132, 'A1', 10, NULL, 1, NULL, 'system', getdate()), (13102, 'A3',132, 'A1', 20, NULL, 1, NULL, 'system', getdate()) * 1000개 까지 밀어넣을 수 있다. 양이 많으면 루프나 bulk insert 이용하세요.
[mssql] 맨날 헷갈리는 SET IDENTITY_INSERT ON/OFF SET IDENTITY_INSERT {{테이블#1}} ON; INSERT INTO {{테이블#1}} ( 컬럼들 ) SELECT 컬럼들 FROM {{테이블#2}} SET IDENTITY_INSERT {{테이블#1}} OFF; 테이블에 자료 밀어넣을때 매번 헷갈리는 identity 컬럼 ON/OFF 시키기