반응형

MSSQL 12

[MSSQL] How to create a blank, non-inputable column.

How to create a blank, non-inputable column. 테이블을 생성하다 보면 NOT NULL 제약조건을 이용하여 컬럼에 NULL이 입력 불가하도록 생성할 수 있습니다. 하지만, 이는 공란까지 입력 불가한 상태는 아니기 때문에 반드시 입력이 필요한 경우에 NOT NULL 만으로 해결되지 않는 경우가 발생합니다. 만약 아래와 같은 NOT NULL인 COL1을 갖는 TEMPTABLE이 있다고 가정한다면 CREATE TABLE TEMPTABLE ( COL1 NVARCHAR(10) NOT NULL ) 여기에 NULL 을 입력하는 경우 아래와 같은 오류가 발생합니다. INSERT INTO TEMPTABLE (COL1) VALUES (NULL) 하지만 공란을 입력하면 입력되는 것을 확인할 ..

[MSSQL] SQL Error [14607] [S0001]: profile 이름이 잘못되었습니다.

EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole' , @membername = ''; mssql의 메일 발송 프로시저인 sp_send_dbmail을 이용하는 경우 아래와 같은 오류를 발견하곤 합니다. 이 경우 주로 원인으로 두 가지인데, 1/ 지정된 profile이 없거나 2/ 지정된 profile에 대한 권한이 없는 경우입니다. 지정된 profile이 없는 경우에는 생성한 profile명으로 변경해 주면 되지만, 권한이 없는 경우에는 아래와 같이 권한 부여가 가능한 계정으로 로그인 후 실행 하여 profile에 대한 접근 권한을 부여해 주는 방법이 있습니다. -- profile 접근하려는 계정이 test인 경우 EXEC msdb.dbo..

[MSSQL] SEQUENCE 사용하기

-- 시퀀스 생성 CREATE SEQUENCE SEQ_TEST START WITH 1; -- 시퀀스 초기화 ALTER SEQUENCE SEQ_TEST RESTART WITH 1; -- 시퀀스 가져오는 방법 SELECT NEXT VALUE FOR SEQ_TEST; -- 시퀀스 삭제 DROP SEQUENCE SEQ_TEST; 시퀀스(Sequence)란? 시퀀스는 한 개의 테이블 내에서 유일값을 가질 수 있도록 별도의 순번을 관리하도록 하는 기법입니다. 만약, A라는 사람과 B라는 사람이 동시에 테이블에 데이터를 기입하는 경우 우선순위는 일반적으로 먼저 입력하는 사람에게 있습니다. TB_STUDENT 학생 번호 학생 명 ... 1 고길동 2 로이야 3 노라라 만약 위와 같이 학생 정보 (TB_STUDENT)라..

[MSSQL] 문자열 나누기 - SPLIT

/** * SPLIT 함수 생성 * ex. SELECT TXT, SORT FROM DBO.FN_STR_SPLIT('TEST1;TEST2;TEST3', ';') */ CREATE FUNCTION [dbo].[FN_STR_SPLIT] ( @INSTR VARCHAR(MAX) = NULL -- 입력내용 , @KEY CHAR(1) = ';' -- 구분자 ) RETURNS @ARRAY TABLE (TXT VARCHAR(1000), SORT INT) AS BEGIN DECLARE @CSTR VARCHAR(MAX) -- 남은 아이템 텍스트 DECLARE @NSTR VARCHAR(MAX) -- 현재 아이템 텍스트 DECLARE @SORT INT -- 정렬 순번 -- STEP. 초기화 SET @CSTR = @INSTR S..

[MSSQL] 시간/날짜 간격 구하기 DATEDIFF

SQL문을 사용하다 보면, 아래와 같은 상황에 직면하곤 합니다. ex) 1. 일주일 전 날씨 정보를 알려주세요. 2. 한 달 전과 오늘의 온도 차를 알려주세요. 3. 1시간 전 매출과 현재 매출을 비교해 주세요. 이 세 가지 예시의 동일한 점은 "OO 전"이라는 점입니다. 이는 시간을 가지고 비교하겠다는 거고, 일단 WHERE에서 일자를 조정할 수 있겠으나 현재 예시를 위해서는 SELECT절에서 처리해 보도록 하겠습니다. 사용방법 SELECT DATEDIFF('구분자', '시작일자', '종료일자') 구분 구분자 약어 년 year yy, yyyy 분기 quarter qq, q 월 month mm, m 일 day dd, d 주 week wk 시간 hour hh, h 분 minute mi, n 초 second..

[Database] My Batis 설치

이전 mssql connection 내용을 먼저 참조하시는게 좋습니다. 2022.05.03 - [분류 전체보기] - [NodeJS] MSSQL DB Pool 설정 [NodeJS] MSSQL DB Pool 설정 0. mssql 모듈 설치 $> npm i mssql 1. db config 파일 생성 : 서버와 개발환경 분리를 위하여, config파일은 분리하여 관리하는 것이 좋습니다. // dbconfig.js module.exports = { port:{DB서버 포트} , user:.. royzero.tistory.com 0. 모듈 설치 $> npm i --save mybatis-mapper 1. xml 생성 : TestSQL.xml 파일 생성 SELECT COL1 , COL2 FROM TEMP WHERE..

[Database] MSSQL DB Pool 설정

이 버전에서는 TOC를 지원하지 않습니다. (ex. 모바일) 0. mssql 모듈 설치 $ npm i mssql 1. db config 파일 생성 : 서버와 개발환경 분리를 위하여, config파일은 분리하여 관리하는 것이 좋습니다. // dbconfig.js module.exports = { port:{DB서버 포트} , user:'{계정아이디}' , password:'{계정비밀번호}' , server:'{DB서버 아이피}' , database:'{데이터베이스 명}' , options: { encrypt: true, // Use this if you're on Windows Azure } , pool: { max: 5, min: 1, idleTimeoutMillis: 30000, } , trustSer..

[MSSQL] 특정 문자열의 개수 추출

Query를 작성하다 보면 해당 칼럼에서 특정 문자열의 개수를 추출하는 경우가 발생합니다. 이는 그 문자열의 개수가 중요하다기보다, 해당 문자열의 개수를 가지고 해당 칼럼에 등록된 항목의 수가 몇 개인지 확인할 때 주로 사용됩니다. LEN(원문) : 원문의 글자 수 반환 REPLCAE(원문, 대상문자, 변경 문자) : 원문에서 대상 문자를 찾아 변경 문자로 바꿔줌 SELECT V.TEXT원문 , LEN(V.TEXT)"문자열 개수" , LEN(V.TEXT) - LEN(REPLACE(V.TEXT, '/', ''))"슬래시(/) 문자열 개수" , LEN(V.TEXT) - LEN(REPLACE(V.TEXT, '/', '')) + 1"항목 수" FROM ( SELECT '바나나/사과/배/딸기' AS TEXT UN..

[MSSQL] 특정 위치 문자열 추출

Query를 작성하다 보면, 특정 컬럽의 값 중에서 특정 위치의 단어만을 추출해야 하는 경우가 발생하곤 합니다. 그럴 때는 아래처럼, CHARINDEX와 SUBSTRING을 적절히 활용하여 추출 가능합니다. CHARINDEX("찾는 문자", "원문"[, "시작 위치"]) : 원문에서 찾는 문자의 위치 INDEX를 반환 SUBSTRING("원문", "시작 위치", "종료 위치") : 원문의 시작 위치에서 종료 위치까지만 반환 LEN("원문") : 원문의 글자 수 반환 SELECT V.TEXT원문 , CHARINDEX('/', V.TEXT)"첫 번째 슬래시 위치" , SUBSTRING(V.TEXT, 0, CHARINDEX('/', V.TEXT))"첫 번째 단어" , CHARINDEX('/', V.TEXT, ..

[MSSQL] 여러 행 값을 한 컬럼에 넣기

데이터 집계를 하다 보면 여러 값을 한 개의 컬럼에 넣어야 하는 경우가 발생합니다. ex #1. 2022년에 각 팀별 평가 평균과 해당 팀원 목록을 한 줄로 보여주세요. ex #2. 택배 송장에 붙일 전체 주문 금액과 해당 상품 목록을 한 줄로 보여주세요. ex #3. 현재 공장에서 생산 중인 제품 목록을 한 줄로 보여주세요. 여기에 동일한 내용은 데이터를 취합해서 한 줄로 보여 줘야 하는 경우입니다. 우선 예시에 앞서 아래의 데이터를 추가해줍니다. CREATE TABLE STUDENT ( SEQDECIMAL(18,0), CLASSVARCHAR(10), NAMEVARCHAR(10) ) INSERT INTO STUDENT (SEQ, CLASS, NAME) VALUES (1, '1반', '호두') INSER..

반응형