본문 바로가기

전체 글

MSSQL 특정노드의 하위노드 전체 가져오기(Top Down) 조직도에서 하위조직 모두 가져오기 오늘 함께 알아볼 과제는 "특정노드의 하위노드 전체를 가져오는 탑다운(Top Down) 방식의 함수 만들기" 입니다. 특정조직코드를 넘기면 그 조직을 포함한 하위조직 모두를 테이블형태로 넘기는 사용자 정의함수를 만들도록 하겠습니다. 다음의 예제를 통해 알아보죠. 국내 굴지의 대기업 사성전자는 다음과 같은 조직도를 가지고 있습니다. 앞의 글에서 회사의 조직도는 트리구조를 가지고 있다고 했습니다. "회사"를 루트로 자식노드들이 나무의 가지와 같이 뻗어 있는 형태죠. 그림1. 사성전자의 조직도이와 같은 트리구조를 구현하려면 테이블에 다음과 같이 데이터를 구성해야 합니다. 트리구조의 조직도 데이터는 루트노드(사성전자, 10000)와 이 루트노드를 부모노드로 하는 자식노드들로 구.. 더보기
MSSQL 특정노드의 상위노드 전체 가져오기(Bottom Up) 조직도에서 상위조직 모두 가져오기 지난글에서는 조직도 데이터에서 특정노드의 하위데이터 전체를 가져오는 함수를 만들어봤습니다. 이번글 에서는 Top Down함수의 반대되는 개념으로 "특정노드의 상위노드 전체 가져오기(Bottom Up)함수"를 작성해 보겠습니다. 사용될 테이블 및 데이터는 지난 특정노드의 하위노드 전체 가져오기(Top Down) 글을 참고하시기 바랍니다. 테이블 반환 사용자 정의 함수 만들기 여기서는 조직코드를 파라메터로 넘기면 그 조직을 포함한 하위조직 전부를 반환하는 테이블 함수입니다. Bottom Up함수도 Top Down과 유사하게 WITH CTE(Common Table Expression)의 재귀공통 테이블식을 사용하여 구현할 수 있습니다.SET ANSI_NULLS ON GO SE.. 더보기
C#문자열과 @기호, @의미 C#에서 @기호는 다양한 경우에 사용되지만, 여기서 소개해 드릴 내용은 문자열에 붙여 사용하는 @의미에 대해 설명드리겠습니다.결론을 먼저 말씀드리자면, 문자열 변수 값 지정시 다음과 같은 경우에 @기호를 사용하면 편리합니다. 1. 파일경로 표현시(백슬래시 '\' 사용)2. 쿼리문 작성시(string 여러줄의 문자열 지정) 다음의 코드를 보시면 문자열에 @기호를 사용할때와 하지 않을 때의 의미차이를 쉽게 파악하실 수 있습니다. //일반문자열로 표현시 string file = "C:\\Users\\Downloads\\ReadMe.txt"; string sql = "SELECT " + " Seq " + " , Name " + " , Flavor " + " , Rank " + "FROM Fruit "; //@기.. 더보기
MSSQL 데이터 복사, 테이블 복사 SELECT INTO, INSERT SELECT를 이용한 백업 MSSQL 테이블 복사하는 여러가지 방법에 대해 알아보도록 하겠습니다. DB작업시 전체백업을 항상 꼼꼼하게 한 뒤에 작업해야 겠지만, 한 두개의 테이블에 UPDATE, DELETE 작업을 할 때 예상치 못한 만일의 사태에 대비하기 위해서 또는 긴급하게 데이터를 원복하기 위해 개별 테이블 단위의 백업도 자주하게 됩니다. 이번 글에서는 SELECT INTO, INSERT SELECT 구문을 활용한 데이터복사와 테이블복사, JOIN을 활용한 데이터복사 및 조건절을 통한 필터링에 대해 알아보겠습니다. 아래의 테이블 카피 구문을 사용하면 간단한 쿼리로 신속하게 데이터를 백업하고 유사시 쉽게 원복할 수 있습니다. 예제로 사용할 테이블은 다음과 같습니다. Fruit SeqName Flavor Rank 1 딸기 새콤하.. 더보기
C# var변수 사용법, dynamic과의 차이점 C# var변수 사용법 먼저 var변수란 무엇인지 뜻 풀이부터 보고 사용법에 대해 설명하도록 하겠습니다.(MS Docs 보기) var변수 - 암시적으로 형식화된 지역 변수 암시적 : 뭔가 단서가 있어 유추할 수 있음(반대말:명시적) 형식화된 : 형식이 지정되는(컴파일러가 가장 적합한 형식을 결정해서 할당함을 의미) 지역변수 : 전역변수로 사용할 수 없고, 메소드 내에서만 사용할 수 있음 var변수 사용예 var i = 3; // i 는 int형으로 컴파일 됨 var s = "Hello world"; // s string형으로 컴파일 됨 var a = new[] { 0, 1, 2, 3 }; //a는 int형 배열로 컴파일 됨 var exp = from c in customers where c.City ==.. 더보기
삼성모니터 C32F397 커브드 장단점, 리얼 사용후기 삼성 PC모니터 커브드 사용후기(C32F39) 먼저 말씀드리지만 전 모니터에 대한 전문지식은 없습니다. 게임도 하지 않습니다. 삼성C32F397 모니터가 게임용으로 적합한지를 알아보려는 분들에게 별로 도움이 되지 않는 글일것 같습니다. 전 개발자용 PC모니터로 구입했고 주로 웹서핑용 또는 동영상 감상정도라고 보시면 됩니다. 지극히 평범한 일반사용자의 관점에서 이 모니터 구입을 고려하시는 분들께 작은 참고가 되었으면 하는 마음으로 사용 후기를적어봅니다. 기본스펙 크기 : 32인치 화면비율 : 16:9 해상도 : 1920 * 1080 (FHD) 주파수 : 60Hz 인터페이스 : HDMI, DP 가격 : 26만원 정도 장점 예쁘다 - 32인치의 크기와 화이트 인클로저는 장식용으로 괜찮습니다. 한마디로 뽀대납니.. 더보기
MSSQL UPDATE, UPDATE FROM MSSQL의 UPDATE구문에 대해 알아보도록 하겠습니다. 일반적인 형태의 UPDATE구문은 UPDATE 테이블명 SET 형식으로 작성합니다.INNER JOIN을 이용하여 다른 테이블과의 비교를 통해 또는 다른 테이블에 있는 데이터로 UPDATE 도 가능합니다. TIP. UPDATE 구문을 사용할 때는 항상 SELECT 구문을 먼저 작성 후 WHERE절을 카피해서 사용합니다. 만약의 경우에 대비해야 하죠. Fruit SeqName Flavor Rank 1 딸기 새콤하다 3 2 바나나 달콤하다 1 3 사과 향긋하다 2 상황1) 하나의 테이블 내에서 조건에 맞는 데이터를 업데이트 하려고 할 때.Fruit테이블에서 Seq=1인 딸기를 Name은 "스토로베리"로, Flavor는 "매콤하다"로 변경한다고 할 경우.. 더보기
mssql 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고... 오류해결 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다. 다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다. 위의 오류메시지는 테이블에 다음과 같은 영향을 주는 경우 발생합니다.열의 Null 허용 설정을 변경한 경우.테이블의 열 순서를 변경한 경우. 열의 데이터 형식을 변경한 경우.새 열을 추가한 경우.MS-SQL을 설치후 생성한 테이블을 수정하려고 하면 위와 같은 오류 메시지가 뜨면서 테이블 변경사항이 적용되지 않는 경우가 있습니다. 이 때 간단한 옵션해제를 통해 문제를 해결할 수 있습니다. 해결방법은 다음과 같습니다. (증상원인 및 해결방법 MS Docs 보러가기) SQL Server .. 더보기
MSSQL 0 채우기 가장 쉬운방법 SQL Server개발시 0 채우기, 또는 특정문자 채우기를 통한 문서번호 생성은 상당히 자주 사용하게 됩니다. 문서번호를 생성할때 DOC20181201-00001와 같이 문서코드+년월일+n자리형식의 일련번호 조합을 많이 사용하기 때문이죠. 예들 들어 5자리의 일련번호를 만들때, 남는 자릿수는 0으로 채우고 싶다면 어떻게 해야할까요? 이때 사용하는 함수가 REPLICATE입니다. 목표) 00001, 00012, 00123 와 같은 n자릿수 일련번호 생성 사용법) REPLICATE(채울문자, 반복횟수) 채울문자 : 0 총자릿수 : 5 반복횟수 : 총 자릿수 - LEN(넣을 문자) 1. 왼쪽에 문자 채우기 먼저 왼쪽에 0을 채우는 방법입니다. SELECT REPLICATE('0', 5 - LEN('1')) .. 더보기
MSSQL 서버의 디폴트 datetime 포맷 변경 웹 개발을 하면서 해외 프로젝트를 할 경우가 종종 있습니다. 우리나라는 기본적으로 yyyy-mm-dd 형식이니 해외 프로젝트도 동일하게 표시해 줘도 문제 없겠지 생각하지만, 예를 들어 러시아 프로젝트를 하다 보니 러시아인들은 dd-mm-yyyy를 날짜형식으로 사용하니 datetime 디폴트 포맷을 맞춰 달라고 합니다. 쉽게 얘기해서 GETDATE() 했을때 yyyy-mm-dd hh:mm:ss 를 dd-mm-yyyy hh:mm:ss 로 나오게 하고 싶은거죠. 그럼 개발자는 DB서버 또는 해당 DB의 디폴트 datetime 포맷을 바꾸려고 하게됩니다. 마이크로소프트 참고문서를 찾아보면 이렇습니다. 여기 내용을 보면 기본 날짜형식은 현재 언어 설정에 따라 결정되니까 SET LANGUAGE나 SET DATEFO.. 더보기