<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>다락방</title>
    <link>https://erin-loft.tistory.com/</link>
    <description>치-타</description>
    <language>ko</language>
    <pubDate>Sun, 17 May 2026 14:22:57 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>에린_1</managingEditor>
    <image>
      <title>다락방</title>
      <url>https://tistory1.daumcdn.net/tistory/4821744/attach/bb65b682f75c45d6a0c4d32d7628d7b8</url>
      <link>https://erin-loft.tistory.com</link>
    </image>
    <item>
      <title>RAII, C++ 포인터</title>
      <link>https://erin-loft.tistory.com/740</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;학습목표&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;C++의 전통적인 포인터(new/ delete)가 왜 위험한지 이해한다.&lt;/li&gt;
&lt;li&gt;RAII(Resource Acquisition Is Initialization)라는 핵심 원칙을 설명할 수 있다.&lt;/li&gt;
&lt;li&gt;소유권을 독점하는 std::unique_ptr의 특징과 사용법을 익힌다.&lt;/li&gt;
&lt;li&gt;소유권을 공유하는 std::shared_ptr의 특징과 사용법을 익힌다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;핵심 키워드&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메모리 누수(memory leak)&lt;/li&gt;
&lt;li&gt;RAII(Resource Acquisition Is Initialization)&lt;/li&gt;
&lt;li&gt;소유권(Ownership)&lt;/li&gt;
&lt;li&gt;std::unique_ptr&lt;/li&gt;
&lt;li&gt;std::shared_ptr&lt;/li&gt;
&lt;li&gt;std::make_unique/std::make_shared&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c++에서 동적할당한 메모리는 반드시 해제해줘야한다. 해제를 하지 못하면 그 메모리는 누수가 일어난다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 해결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAII (Resource Acquisition Is Initialization)패턴&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자원을 획득하는 시점은, 그 자원을 관리할 &amp;lsquo;객채&amp;rsquo;의 &amp;lsquo;생성 시점&amp;rsquo;과 일치해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리(자원)을 new로 직접 다루지 말고, 메모리를 관리하는 객체(스마트 포인터)를 만들어서 그 객체에게 관리를 맡기자는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체는 자기가 사라질 때소멸자가 자동으로 호출되면서 delete를 처리하도록 일을 수행한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 사용법&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소유권 독점: std::unique_ptr
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;unique_ptr은 이름 그대로 &amp;lsquo;유일한&amp;rsquo; 소유권을 가진다. 복사는 불가능하고, 소유권을 다른 unique_ptr에게 이동시키는 것만 가능하다.&lt;/li&gt;
&lt;li&gt;가볍고 빨라서 기본적으로 사용하는 스마트 포인터이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;memory&amp;gt; // 스마트 포인터를 사용하려면 꼭 포함해야 한다.

void processPlayer_safe()
{
	//이렇게 만들면 Player 객체의 소유권은 p가 가지게 된다.
	//std::make_unique를 쓰는 것이 가장 안전하고 좋은 방법이다.
	std::unique_ptr&amp;lt;Player&amp;gt; p = std::make_unique&amp;lt;Player&amp;gt;();
	
	p-&amp;gt;doSomething();
}
// 함수가 끝나면 p가 사라지면서, 자기가 가리키던 Player 메모리를 자동으로 해제한다.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;소유권 공유:std::shared_ptr
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공유라는 이름처럼, 하나의 메모리를 여러 shared_ptr이 함께 가리키며 공동으로 소유할 수 있다.&lt;/li&gt;
&lt;li&gt;내부적으로 참조 카운트(Reference Count)라는 걸 가지고 있어서, 자신을 가리키는 shared_ptr이 몇 개인지 세고 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새로운 shared_ptr가 같은 메모리를 가리키면 참조 카운트가 1증가한다.&lt;/li&gt;
&lt;li&gt;hared_ptr가 사라지면(스코프를 벗어나거나 다른 값을 할당받으면) 참조 카운트가 1 감소한다.&lt;/li&gt;
&lt;li&gt;참조 카운트가 0이 되는 바로 그 순간, 마지막 남은 shared_ptr가 메모리를 delete 해준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MMORPG에서 한 명의 플레이어가 파티 목록에도 있고, 공격대 목록에도 있을 때처럼 여러 곳에서 동일한 객체를 참조해야 할 때 유용하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;#include &amp;lt;memory&amp;gt;
#include &amp;lt;vector&amp;gt;

//플레이어를 가리키는 포인터를 담을 리스트
std::vector&amp;lt;std::shared_ptr&amp;lt;Player&amp;gt;&amp;gt; party_list;
std::vector&amp;lt;std::shared_ptr&amp;lt;Player&amp;gt;&amp;gt; raid_list;

void managePlayer()
{
	//플레이어를 만들고 p1이 소유(참조 카운트1)
	std::shared_ptr&amp;lt;Player&amp;gt; p1 = std::make_shared&amp;lt;Player&amp;gt;();
	
	//파티리스트에 p1을 복사. 이제 p1과 list의 원소가 함께 소유(참조 카운트2)
	party_list.push_back(p1);
	//레이드리스트에도 p1을 복사(참조 카운트3)
	raid_list.push_back(p1);
}
// 함수가 끝나면 p1은 사라지지만, 
// 아직 list들이 객체를 가리키고 있으므로 참조 카운트는 2가되고 메모리는 해제되지 않는다.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>언어/C++</category>
      <category>C</category>
      <category>c++</category>
      <category>RAII</category>
      <category>shared_ptr</category>
      <category>unique_ptr</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/740</guid>
      <comments>https://erin-loft.tistory.com/740#entry740comment</comments>
      <pubDate>Tue, 15 Jul 2025 20:24:30 +0900</pubDate>
    </item>
    <item>
      <title>2025.02.25</title>
      <link>https://erin-loft.tistory.com/739</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/734&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/734&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540643380&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL] 합계 구하기 SUM&quot; data-og-description=&quot;SUM을 사용하여 전체 데이터의 합계 또는 특정 칼럼을 기준하여 그룹별로 합계를 구할 수 있다.기본 문법-- TABLE 내 모든 COL1 데이터의 합계를 출력SELECT SUM(COL1) FROM TABLE -- TABLE 내 COL1의 값 별로 COL2&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/734&quot; data-og-url=&quot;https://erin-loft.tistory.com/734&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bj8Eol/hyYjjG5ZpE/HfSkMqxzKxXQFKAyH9Xzi1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bcOh2b/hyYjwmaMPB/ZkwbKZyByaggWutRVN3lZ0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bfOwoH/hyYjksuyEW/GaOWTNNBkDlAqK6wQ1jKUk/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/734&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/734&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bj8Eol/hyYjjG5ZpE/HfSkMqxzKxXQFKAyH9Xzi1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bcOh2b/hyYjwmaMPB/ZkwbKZyByaggWutRVN3lZ0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bfOwoH/hyYjksuyEW/GaOWTNNBkDlAqK6wQ1jKUk/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL] 합계 구하기 SUM&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SUM을 사용하여 전체 데이터의 합계 또는 특정 칼럼을 기준하여 그룹별로 합계를 구할 수 있다.기본 문법-- TABLE 내 모든 COL1 데이터의 합계를 출력SELECT SUM(COL1) FROM TABLE -- TABLE 내 COL1의 값 별로 COL2&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/735&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/735&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540655396&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL] 조건에 따라 데이터를 입력하는 UPDATE&quot; data-og-description=&quot;MSSQL을 사용하다 보면 필드 값을 변경하거나 조건에 맞는 값을 새로운 필드에 입력해야 하는 경우가 있다. 엑셀에서 IF 함수를 사용하는데, MSSQL에서는 UPDATE문 + CASE WHEN THEN 문을 이용한다.기본 문&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/735&quot; data-og-url=&quot;https://erin-loft.tistory.com/735&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Hr1LA/hyYjAvfQ8U/14F7gX95Sk4PJxSH9z1FYk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dkEXow/hyYjKYWKDA/kqkEjHJmcMUm3bPuman6sk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bmO5Mi/hyYjL4EnGg/cEBEavkyzLtCJ2xi4K8PxK/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/735&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/735&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Hr1LA/hyYjAvfQ8U/14F7gX95Sk4PJxSH9z1FYk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dkEXow/hyYjKYWKDA/kqkEjHJmcMUm3bPuman6sk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bmO5Mi/hyYjL4EnGg/cEBEavkyzLtCJ2xi4K8PxK/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL] 조건에 따라 데이터를 입력하는 UPDATE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;MSSQL을 사용하다 보면 필드 값을 변경하거나 조건에 맞는 값을 새로운 필드에 입력해야 하는 경우가 있다. 엑셀에서 IF 함수를 사용하는데, MSSQL에서는 UPDATE문 + CASE WHEN THEN 문을 이용한다.기본 문&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/736&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/736&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540663102&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL] 데이터 타입변환(CONVERT, CAST)&quot; data-og-description=&quot;MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT 함수와 CAST 함수이다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용한다.CONVERT데이터 변환 함수, 날짜 변환에도 유용&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/736&quot; data-og-url=&quot;https://erin-loft.tistory.com/736&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Ksmfn/hyYjKdyJ33/9sie8laMkNInEIf0DUWkC1/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/uZuKS/hyYjCGBvrC/50KsNarWZObKUfPILdgkgk/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/bgnCbZ/hyYjjG5ZIP/5cSbMcjA63hQxl8fsGfZqk/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/736&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/736&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Ksmfn/hyYjKdyJ33/9sie8laMkNInEIf0DUWkC1/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/uZuKS/hyYjCGBvrC/50KsNarWZObKUfPILdgkgk/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/bgnCbZ/hyYjjG5ZIP/5cSbMcjA63hQxl8fsGfZqk/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL] 데이터 타입변환(CONVERT, CAST)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT 함수와 CAST 함수이다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용한다.CONVERT데이터 변환 함수, 날짜 변환에도 유용&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/737&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/737&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540669293&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL] 테이블 변수를 활용한 배열 처리&quot; data-og-description=&quot;1. 타입별로 수량 및 데이터 건수를 가져오고 싶을 때 활용테이블 변수테이블 반환 매개 변수이다. 테이블 이름은 (@)으로 시작한다.테이블 변수가 정의된 함수 및 저장 프로시저, 일괄 처리가 끝&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/737&quot; data-og-url=&quot;https://erin-loft.tistory.com/737&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/t2OIB/hyYjhvNwsT/VkxIj4sts4FdziSVLhbh31/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/LcSc6/hyYjtweJae/0aT8PM5glnlCxfLwNE0i1K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/M859y/hyYjs47P81/TtkkwIE1dzlpjfLErfIUSk/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/737&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/737&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/t2OIB/hyYjhvNwsT/VkxIj4sts4FdziSVLhbh31/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/LcSc6/hyYjtweJae/0aT8PM5glnlCxfLwNE0i1K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/M859y/hyYjs47P81/TtkkwIE1dzlpjfLErfIUSk/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL] 테이블 변수를 활용한 배열 처리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 타입별로 수량 및 데이터 건수를 가져오고 싶을 때 활용테이블 변수테이블 반환 매개 변수이다. 테이블 이름은 (@)으로 시작한다.테이블 변수가 정의된 함수 및 저장 프로시저, 일괄 처리가 끝&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/738&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/738&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540675833&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL] Try ~ Catch - Transaction,Throw&quot; data-og-description=&quot;TRY, CATCH, FINALLYBEGIN TRY-- 실행할 명령문END TRYBEGIN CATCH-- 예외처리 명령문END CATCHTRYBEGIN TRY ~ END TRY로 감싸야 한다.오류가 발생할 가능성이 있는 실행할 명령문을 넣는다.오류 없이 실행이 END TRY 도달&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/738&quot; data-og-url=&quot;https://erin-loft.tistory.com/738&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eqyJzk/hyYjyjTUDS/xoK2OQ1uwFM0xIDdABJkG1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bIAAve/hyYjqlWxgX/w1XmvnwDUVlhBFq6OjgEG0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bP3pud/hyYjBgCF25/UIcRKckuBZt3jF8DnB7N5K/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/738&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/738&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eqyJzk/hyYjyjTUDS/xoK2OQ1uwFM0xIDdABJkG1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bIAAve/hyYjqlWxgX/w1XmvnwDUVlhBFq6OjgEG0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bP3pud/hyYjBgCF25/UIcRKckuBZt3jF8DnB7N5K/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL] Try ~ Catch - Transaction,Throw&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;TRY, CATCH, FINALLYBEGIN TRY-- 실행할 명령문END TRYBEGIN CATCH-- 예외처리 명령문END CATCHTRYBEGIN TRY ~ END TRY로 감싸야 한다.오류가 발생할 가능성이 있는 실행할 명령문을 넣는다.오류 없이 실행이 END TRY 도달&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저번주에 만든 프로시저 쓸만하다고 칭찬받았다 ㅎㅎ 아이 조아&lt;/p&gt;</description>
      <category>Study/TIL(Today I Learned)</category>
      <category>TIL</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/739</guid>
      <comments>https://erin-loft.tistory.com/739#entry739comment</comments>
      <pubDate>Wed, 26 Feb 2025 12:31:32 +0900</pubDate>
    </item>
    <item>
      <title>[DB/MSSQL] Try ~ Catch - Transaction,Throw</title>
      <link>https://erin-loft.tistory.com/738</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;TRY, CATCH, FINALLY&lt;/h2&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;BEGIN TRY
-- 실행할 명령문
END TRY

BEGIN CATCH
-- 예외처리 명령문
END CATCH
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;TRY&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;BEGIN TRY ~ END TRY로 감싸야 한다.&lt;/li&gt;
&lt;li&gt;오류가 발생할 가능성이 있는 실행할 명령문을 넣는다.&lt;/li&gt;
&lt;li&gt;오류 없이 실행이 END TRY 도달 시 CATCH를 생략하며, END CATCH문 뒤에 명령문을 실행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CATCH&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;END TRY 뒤에 바로 와야한다.&lt;/li&gt;
&lt;li&gt;BEGIN TRY ~ END CATCH로 감싸야 한다.&lt;/li&gt;
&lt;li&gt;TRY 블록에 오류 발생시 실행할 명령문을 넣는다.&lt;/li&gt;
&lt;li&gt;오류가 발생하면 즉시 CATCH 블록을 실행한다.&lt;/li&gt;
&lt;li&gt;END CATCH 도달 시, END CATCH문 뒤에 명령문을 실행한다.&lt;/li&gt;
&lt;li&gt;CATCH 블록에 의해 트랩된 오류는 응용 프로그램으로 리턴되지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;추가 사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 연결이 종료되지 않는 심각도가 10 이상인 모든 실행 오류를 캐치한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;심각하지 않은 오류, 심각도 10 이하에 대해서는 캐치하지 않는다.&lt;/li&gt;
&lt;li&gt;연결이 종료되면 실행이 종료되기 때문에 일반적으로 심각도 20~25의 데이터베이스 연결을 종료하는 오류는 CATCH 블록에서 처리되지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TRY ~ CATCH는 중첩이 가능하다.&lt;/li&gt;
&lt;li&gt;CATCH 블록에서 실행 가능한 함수
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ERROR_NUMBER(): 오류 번호를 반환한다.&lt;/li&gt;
&lt;li&gt;ERROR_SEVERITY(): 오류 심각도를 반환한다.&lt;/li&gt;
&lt;li&gt;ERROR_STATE(): 오류 상태 번호를 반환한다.&lt;/li&gt;
&lt;li&gt;ERROR_PROCEDURE(): 오류가 발생한 저장 프로시저 또는 트리거의 이름을 반환한다.&lt;/li&gt;
&lt;li&gt;ERROR_LINE(): 오류를 일으킨 루틴 내부의 행 번호를 리턴한다.&lt;/li&gt;
&lt;li&gt;ERROR_MESSAGE(): 오류 메시지의 전체 텍스트를 반환한다. 텍스트에는 길이, 오브젝트 이름 또는 시간과 같은 대체 가능한 매개 변수에 제공된 값이 들어 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Transaction 제어&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;BEGIN TRAN을 사용한 COMMIT/ROLLBACK&lt;/h3&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;BEGIN TRY
	BEGIN TRAN
		-- 실행할 TRANSACTION
		-- 오류가 없다면 COMMIT
		COMMIT TRAN
END TRY

BEGIN CATCH
	-- 오류 발생 시 ROLLBACK
	ROLLBACK TRAN
END CATCH
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TRY 블록에 오류가 없을 경우 COMMIT TRAN 까지 동작 후 CATCH를 건너뛴다.&lt;/li&gt;
&lt;li&gt;TRY 블록에 오류가 있을 경우 CATCH 블록으로 이동하여 ROLLBACK TRAN이 실행된다.&lt;/li&gt;
&lt;li&gt;여러 COMMIT을 통해 일정부분까지 반영 하도록 할 수 있다.&lt;/li&gt;
&lt;li&gt;에러가 나기전 COMMIT까지 COMMIT이 완료되며, 에러 난 후로는 롤백이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Throw - 예외 발생시키기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Throw&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Throw는 쿼리문에서 사용자가 직접 예외를 발생시킬 수 있게 해준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;pf&quot;&gt;&lt;code&gt;THROW error_number, message, state
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;error_number
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예외를 나타내는 상수 혹은 변수이다.&lt;/li&gt;
&lt;li&gt;int형이며 50000이상 2147483647 이하의 수여야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;message
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예외를 설명하는 문자열 or 변수이다.&lt;/li&gt;
&lt;li&gt;nvarchar형이며 길이는 2048이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;state
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메시지와 연결할 상태를 나타내는 상수 or 변수이다.&lt;/li&gt;
&lt;li&gt;tinyint형이며 0~255 사이 이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;THROW문 앞의 문은 세미콜론(;)으로 끝나야한다.&lt;/li&gt;
&lt;li&gt;TRY~CATCH 문을 사용할 수 없으면 명령문 일괄 처리가 종료되며, 예외가 발생한 줄 번호와 프로시저가 설정된다.&lt;/li&gt;
&lt;li&gt;심각도는 16으로 설정된다.&lt;/li&gt;
&lt;li&gt;매개 변수 없이 지정된 THROW문은 CATCH블록 안에 있어야 한다. 이 경우 예외가 발생한다.&lt;/li&gt;
&lt;li&gt;MESSAGE의 텍스트에 %는 예약문자로 사용하기 위해서 %%로 사용해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://da-new.tistory.com/94&quot;&gt;https://da-new.tistory.com/94&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540574212&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[MsSQL] Exception / Try~Catch 문 활용 -Transaction, Throw&quot; data-og-description=&quot;Intro 안녕하세요 초보 DBA 다뉴입니다. 저번포스팅 Exception / Try ~ Catch문 기초에 이어서 활용하는 방법에 대해서 한번 알아보려고 하는데요. 기초에 대해 정리한 글이 궁금하신분은 아래의 글을 참&quot; data-og-host=&quot;da-new.tistory.com&quot; data-og-source-url=&quot;https://da-new.tistory.com/94&quot; data-og-url=&quot;https://da-new.tistory.com/94&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bB8Hc7/hyYjuomkxp/BUkHndZbgbdhPncPr4pod1/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/b8o9JR/hyYjsqxuFX/qidrwRUnpZIKSkFkr4Bf2k/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/ltzz6/hyYjJTe711/jPHKKua9BIMRDu6YuVk3xk/img.png?width=498&amp;amp;height=397&amp;amp;face=0_0_498_397&quot;&gt;&lt;a href=&quot;https://da-new.tistory.com/94&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://da-new.tistory.com/94&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bB8Hc7/hyYjuomkxp/BUkHndZbgbdhPncPr4pod1/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/b8o9JR/hyYjsqxuFX/qidrwRUnpZIKSkFkr4Bf2k/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/ltzz6/hyYjJTe711/jPHKKua9BIMRDu6YuVk3xk/img.png?width=498&amp;amp;height=397&amp;amp;face=0_0_498_397');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[MsSQL] Exception / Try~Catch 문 활용 -Transaction, Throw&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Intro 안녕하세요 초보 DBA 다뉴입니다. 저번포스팅 Exception / Try ~ Catch문 기초에 이어서 활용하는 방법에 대해서 한번 알아보려고 하는데요. 기초에 대해 정리한 글이 궁금하신분은 아래의 글을 참&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;da-new.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://da-new.tistory.com/103&quot;&gt;[MsSQL] Exception / Throw 사용 시 주의 사항 - rollback&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540574761&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[MsSQL] Exception / Throw 사용 시 주의 사항 - rollback&quot; data-og-description=&quot;Intro 안녕하세요. 초보 DBA입니다. 얼마전 쿼리 검수를 하다가 발견한 잘못 작성된 SQL 문인데요. 논리적으로 생각해보니 이상해 보여서 테스트를 한번 진행하고 해당 내용을 남겨볼까합니다. Throw&quot; data-og-host=&quot;da-new.tistory.com&quot; data-og-source-url=&quot;https://da-new.tistory.com/103&quot; data-og-url=&quot;https://da-new.tistory.com/103&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d1seg7/hyYjn3QTbR/ErrRyfSIZR0FLkRLcmTYik/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/cIYsca/hyYjMWLCT6/rvWrCaXIwj7tlkwKmTUqMK/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/bErMVn/hyYjkeZljD/ldcAWoTfz2ZvQoMqaBnqF1/img.png?width=636&amp;amp;height=668&amp;amp;face=0_0_636_668&quot;&gt;&lt;a href=&quot;https://da-new.tistory.com/103&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://da-new.tistory.com/103&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d1seg7/hyYjn3QTbR/ErrRyfSIZR0FLkRLcmTYik/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/cIYsca/hyYjMWLCT6/rvWrCaXIwj7tlkwKmTUqMK/img.png?width=510&amp;amp;height=314&amp;amp;face=0_0_510_314,https://scrap.kakaocdn.net/dn/bErMVn/hyYjkeZljD/ldcAWoTfz2ZvQoMqaBnqF1/img.png?width=636&amp;amp;height=668&amp;amp;face=0_0_636_668');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[MsSQL] Exception / Throw 사용 시 주의 사항 - rollback&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Intro 안녕하세요. 초보 DBA입니다. 얼마전 쿼리 검수를 하다가 발견한 잘못 작성된 SQL 문인데요. 논리적으로 생각해보니 이상해 보여서 테스트를 한번 진행하고 해당 내용을 남겨볼까합니다. Throw&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;da-new.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer/DB</category>
      <category>catch</category>
      <category>db</category>
      <category>MSSQL</category>
      <category>Throw</category>
      <category>transaction</category>
      <category>try</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/738</guid>
      <comments>https://erin-loft.tistory.com/738#entry738comment</comments>
      <pubDate>Wed, 26 Feb 2025 12:30:02 +0900</pubDate>
    </item>
    <item>
      <title>[DB/MSSQL] 테이블 변수를 활용한 배열 처리</title>
      <link>https://erin-loft.tistory.com/737</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 타입별로 수량 및 데이터 건수를 가져오고 싶을 때 활용&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;테이블 변수&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테이블 반환 매개 변수이다. 테이블 이름은 (@)으로 시작한다.&lt;/li&gt;
&lt;li&gt;테이블 변수가 정의된 함수 및 저장 프로시저, 일괄 처리가 끝나면 자동으로 정리된다.&lt;/li&gt;
&lt;li&gt;트랜잭션은 테이블 변수가 업데이트 되는 동안만 지속된다.&lt;/li&gt;
&lt;li&gt;리소스 잠금과 로깅에 대한 요구가 줄어든다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;T-SQL(Transact-SQL)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL 표준 상에서 확장&lt;/li&gt;
&lt;li&gt;선언문을 이용하여 관계형 데이터베이스를 조회하고 변경하고 정의한다.&lt;/li&gt;
&lt;li&gt;다양한 지원 함수, DELETE 및 UPDATE 문에 대한 변경, 절차적 프로그래밍, 지역 변수를 포함한다.&lt;/li&gt;
&lt;li&gt;트랜젝트 SQL의 흐름 제어 키워드로 BEGIN/END, BREAK, CONTINUE, GOTO, IF/ELSE, RETURN, WAITFOR, WHILE이 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;BEGIN
	SET @MonthArray = '0,31,28,31,30,31,30,31,31,30,31,30,31'
	
	WHILE CHARINDEX(',', @MonthArray) &amp;lt;&amp;gt; 0
		BEGIN
			SET @Split = CAST(SUBSTRING(@MonthArray, 1, CHARIDEX(',', @MonthArray) -1 as int)
			INSERT INTO @MonthTable(MonthValue) VALUES(@Split)
			SET @MonthArray = SUBSTRING(@MonthArray, CHARINDEX(',', @MonthArray)+, LEN(@MonthArray))
		END
		
	IF CHARINDEX(',', @MonthArray) = 0
		BEGIN
			SET @Split = SUBSTRING(@MonthArray,1,LEN(@MonthArray))
			INSERT INTO @MonthTable VALUES(@Split)
		END
END
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://trustit.tistory.com/161&quot;&gt;MS-SQL 테이블 변수를 활용한 배열 처리&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540484495&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;MS-SQL 테이블 변수를 활용한 배열 처리&quot; data-og-description=&quot;1. 타입별로 수량 및 데이터 건수를 가져오고 싶을 때 활용테이블 변수- 테이블 반환 매개 변수입니다. 테이블 이름은 (@)시작한다. - 테이블 변수가 정의된 함수 및 저장프로시저, 일괄 처리가 끝&quot; data-og-host=&quot;trustit.tistory.com&quot; data-og-source-url=&quot;https://trustit.tistory.com/161&quot; data-og-url=&quot;https://trustit.tistory.com/161&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bqHDlf/hyYjEj6xqU/Y66sAwYBwMGDnsnWD9Q5wk/img.png?width=401&amp;amp;height=216&amp;amp;face=0_0_401_216,https://scrap.kakaocdn.net/dn/bSzoK3/hyYjj1qtER/JuXjrTSxB7fTsmeR04cfjK/img.png?width=401&amp;amp;height=216&amp;amp;face=0_0_401_216,https://scrap.kakaocdn.net/dn/cV3o6d/hyYjKSaM05/O9FtDp0x10YSCoNoikYprk/img.png?width=401&amp;amp;height=216&amp;amp;face=0_0_401_216&quot;&gt;&lt;a href=&quot;https://trustit.tistory.com/161&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://trustit.tistory.com/161&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bqHDlf/hyYjEj6xqU/Y66sAwYBwMGDnsnWD9Q5wk/img.png?width=401&amp;amp;height=216&amp;amp;face=0_0_401_216,https://scrap.kakaocdn.net/dn/bSzoK3/hyYjj1qtER/JuXjrTSxB7fTsmeR04cfjK/img.png?width=401&amp;amp;height=216&amp;amp;face=0_0_401_216,https://scrap.kakaocdn.net/dn/cV3o6d/hyYjKSaM05/O9FtDp0x10YSCoNoikYprk/img.png?width=401&amp;amp;height=216&amp;amp;face=0_0_401_216');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;MS-SQL 테이블 변수를 활용한 배열 처리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 타입별로 수량 및 데이터 건수를 가져오고 싶을 때 활용테이블 변수- 테이블 반환 매개 변수입니다. 테이블 이름은 (@)시작한다. - 테이블 변수가 정의된 함수 및 저장프로시저, 일괄 처리가 끝&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;trustit.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer/DB</category>
      <category>db</category>
      <category>MSSQL</category>
      <category>배열</category>
      <category>윤년</category>
      <category>테이블</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/737</guid>
      <comments>https://erin-loft.tistory.com/737#entry737comment</comments>
      <pubDate>Wed, 26 Feb 2025 12:28:21 +0900</pubDate>
    </item>
    <item>
      <title>[DB/MSSQL] 데이터 타입변환(CONVERT, CAST)</title>
      <link>https://erin-loft.tistory.com/736</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT 함수와 CAST 함수이다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CONVERT&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 변환 함수, 날짜 변환에도 유용하게 사용 가능하다. 부동 소수점 또는 숫자에서 정수로 변환할 때 CONVERT() 함수는 결과를 자르고 다른 변환일 경우에는 반올림을 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 문법&lt;/h3&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;-- 문법
CONVERT(data_type[(length)], expression[style])

-- 예시
SELECT CONVERT(nvarchar(10), 칼럼) AS 칼럼명 FROM MY_TABLE -- VARCHAR로 변환
SELECT CONVERT(int, 칼럼) as 칼럼명 FROM MY_TABLE -- int로 변환
SELECT CONVERT(char, 칼럼) as 칼럼명 FROM MY_TABLE -- char로 변환
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;expression: 유효한 식&lt;/li&gt;
&lt;li&gt;data_type: 대상 데이터 형식 별칭 데이터 형식은 사용할 수 없다.&lt;/li&gt;
&lt;li&gt;length: 대상 데이터 형식의 길이를 지정하는 선택적 정수이다. 기본값은 30이다.&lt;/li&gt;
&lt;li&gt;style: CONVERT()가 식을 변환하는 방법을 지정하는 정수식이다. style이 NULL이면 NULL값이 반환된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CONVERT 날짜 변환 표&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;483&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyp3G6/btsMvMPalOy/U6KAhd2FfpQma5Dyg8sBI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyp3G6/btsMvMPalOy/U6KAhd2FfpQma5Dyg8sBI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyp3G6/btsMvMPalOy/U6KAhd2FfpQma5Dyg8sBI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdyp3G6%2FbtsMvMPalOy%2FU6KAhd2FfpQma5Dyg8sBI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;483&quot; height=&quot;451&quot; data-origin-width=&quot;483&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CAST&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;float, 또는 numberic에서 integer로 변환할 때 CAST() 함수는 결과를 자른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 문법&lt;/h3&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;-- 문법
CAST(expression as data_type(length))

-- 예시
SELECT CAST(칼럼 as int) FROM MY_TABLE
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coding-factory.tistory.com/100&quot;&gt;[MSSQL] 데이터 타입변환 (CONVERT,CAST) 사용법 &amp;amp; 예제&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540450740&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[MSSQL] 데이터 타입변환 (CONVERT,CAST) 사용법 &amp;amp; 예제&quot; data-og-description=&quot;MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT함수와 CAST함수입니다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용합니다. 쓰는 방식만 조금 다르고 하는 일은 같습&quot; data-og-host=&quot;coding-factory.tistory.com&quot; data-og-source-url=&quot;https://coding-factory.tistory.com/100&quot; data-og-url=&quot;https://coding-factory.tistory.com/100&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Sq0vX/hyYjk661dB/IBg695J3MtH9uRIkSMKA50/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/dbHmoY/hyYjoIrZZU/Rs1VGEABza8fMjPKWl4881/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/Oow3G/hyYjmJ1Tfs/BXk727fhMK9XoULxGsaWW1/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451&quot;&gt;&lt;a href=&quot;https://coding-factory.tistory.com/100&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://coding-factory.tistory.com/100&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Sq0vX/hyYjk661dB/IBg695J3MtH9uRIkSMKA50/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/dbHmoY/hyYjoIrZZU/Rs1VGEABza8fMjPKWl4881/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451,https://scrap.kakaocdn.net/dn/Oow3G/hyYjmJ1Tfs/BXk727fhMK9XoULxGsaWW1/img.png?width=483&amp;amp;height=451&amp;amp;face=0_0_483_451');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[MSSQL] 데이터 타입변환 (CONVERT,CAST) 사용법 &amp;amp; 예제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT함수와 CAST함수입니다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용합니다. 쓰는 방식만 조금 다르고 하는 일은 같습&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;coding-factory.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer/DB</category>
      <category>cast</category>
      <category>convert</category>
      <category>db</category>
      <category>MSSQL</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/736</guid>
      <comments>https://erin-loft.tistory.com/736#entry736comment</comments>
      <pubDate>Wed, 26 Feb 2025 12:27:47 +0900</pubDate>
    </item>
    <item>
      <title>[DB/MSSQL] 조건에 따라 데이터를 입력하는 UPDATE</title>
      <link>https://erin-loft.tistory.com/735</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MSSQL을 사용하다 보면 필드 값을 변경하거나 조건에 맞는 값을 새로운 필드에 입력해야 하는 경우가 있다. 엑셀에서 IF 함수를 사용하는데, MSSQL에서는 UPDATE문 + CASE WHEN THEN 문을 이용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 문법&lt;/h3&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;UPDATE TABLE TableName SET FieldName = InputValue

--WHERE와 같이 활용한 UPDATE
UPDATE TABLE TableName SET FieldName = InputValue
WHERE FieldName = expr
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UPDATE의 경우 CASE WHEN THEN을 사용해 조건에 따라 값을 달리하여 UPDATE도 가능하다. 또 JOIN을 통해 다른 테이블의 값을 UPDATE 할 수도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://elonbro.tistory.com/entry/MSSQL-%EC%A1%B0%EA%B1%B4%EC%97%90-%EB%94%B0%EB%9D%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EB%8A%94-UPDATE-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95&quot;&gt;MSSQL 조건에 따라 데이터를 입력하는 UPDATE 사용 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540386513&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;MSSQL 조건에 따라 데이터를 입력하는 UPDATE 사용 방법&quot; data-og-description=&quot;MSSQL을 사용하다 보면 필드 값을 변경하거나 조건에 맞는 값을 새로운 필드에 입력해야 하는 경우가 있습니다. 엑셀에서는 IF 함수를 사용해서 조건에 맞는 값을 입력하는 방법을 사용합니다. 엑&quot; data-og-host=&quot;elonbro.tistory.com&quot; data-og-source-url=&quot;https://elonbro.tistory.com/entry/MSSQL-%EC%A1%B0%EA%B1%B4%EC%97%90-%EB%94%B0%EB%9D%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EB%8A%94-UPDATE-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95&quot; data-og-url=&quot;https://elonbro.tistory.com/entry/MSSQL-%EC%A1%B0%EA%B1%B4%EC%97%90-%EB%94%B0%EB%9D%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EB%8A%94-UPDATE-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gOaed/hyYjMvFf49/Kc63AcUZtawV9wjH3Trz31/img.png?width=475&amp;amp;height=199&amp;amp;face=0_0_475_199,https://scrap.kakaocdn.net/dn/uqFa9/hyYjo2JACg/1glFTFirBTtJXEw6u8xD8K/img.png?width=475&amp;amp;height=199&amp;amp;face=0_0_475_199,https://scrap.kakaocdn.net/dn/mTXug/hyYjD6yNpk/fb8mKBZKNvTIKc2c62uHJK/img.png?width=1011&amp;amp;height=438&amp;amp;face=0_0_1011_438&quot;&gt;&lt;a href=&quot;https://elonbro.tistory.com/entry/MSSQL-%EC%A1%B0%EA%B1%B4%EC%97%90-%EB%94%B0%EB%9D%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EB%8A%94-UPDATE-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://elonbro.tistory.com/entry/MSSQL-%EC%A1%B0%EA%B1%B4%EC%97%90-%EB%94%B0%EB%9D%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EB%8A%94-UPDATE-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gOaed/hyYjMvFf49/Kc63AcUZtawV9wjH3Trz31/img.png?width=475&amp;amp;height=199&amp;amp;face=0_0_475_199,https://scrap.kakaocdn.net/dn/uqFa9/hyYjo2JACg/1glFTFirBTtJXEw6u8xD8K/img.png?width=475&amp;amp;height=199&amp;amp;face=0_0_475_199,https://scrap.kakaocdn.net/dn/mTXug/hyYjD6yNpk/fb8mKBZKNvTIKc2c62uHJK/img.png?width=1011&amp;amp;height=438&amp;amp;face=0_0_1011_438');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;MSSQL 조건에 따라 데이터를 입력하는 UPDATE 사용 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;MSSQL을 사용하다 보면 필드 값을 변경하거나 조건에 맞는 값을 새로운 필드에 입력해야 하는 경우가 있습니다. 엑셀에서는 IF 함수를 사용해서 조건에 맞는 값을 입력하는 방법을 사용합니다. 엑&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;elonbro.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer/DB</category>
      <category>db</category>
      <category>MSSQL</category>
      <category>update</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/735</guid>
      <comments>https://erin-loft.tistory.com/735#entry735comment</comments>
      <pubDate>Wed, 26 Feb 2025 12:26:33 +0900</pubDate>
    </item>
    <item>
      <title>[DB/MSSQL] 합계 구하기 SUM</title>
      <link>https://erin-loft.tistory.com/734</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SUM을 사용하여 전체 데이터의 합계 또는 특정 칼럼을 기준하여 그룹별로 합계를 구할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 문법&lt;/h3&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;-- TABLE 내 모든 COL1 데이터의 합계를 출력
SELECT SUM(COL1)
	FROM TABLE
	
-- TABLE 내 COL1의 값 별로 COL2의 합을 출력
SELECT COL1
	, SUM(COL2)
	FROM TABLE
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SUM은 그룹함수 이기 때문에 GROUP BY되지 않은 칼럼과는 함께 조회될 수 없다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그룹함수: 그룹별로 데이터를 조회하는 데 사용되는 함수 AVG(평균값), MIN(최소값) 등이 있다. GROUP BY로 GROUP을 지정해 주되 지정하지 않은 경우 전체데이터를 그룹으로 조회한다.&lt;/li&gt;
&lt;li&gt;SUM 함수는 NULL데이터를 무시하고 계산한다. NULL데이터를 무시하고 싶지 않다면 ISNULL이나 COALSESCE 함수를 사용해 데이터를 치환해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aidenarea.tistory.com/entry/MSSQL-합계-구하기-SUM&quot;&gt;https://aidenarea.tistory.com/entry/MSSQL-합계-구하기-SUM&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740540341791&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;MSSQL 합계 구하기 SUM&quot; data-og-description=&quot;합계 구하기MSSQL에서 데이터의 합계를 구하는 방법에 대해 포스팅하겠습니다 전체데이터의 합계 또는 특정칼럼을 기준하여 그룹별로 합계를 알고 싶을 수 있습니다 이럴 때 SUM함수를 이용하여 &quot; data-og-host=&quot;aidenarea.tistory.com&quot; data-og-source-url=&quot;https://aidenarea.tistory.com/entry/MSSQL-합계-구하기-SUM&quot; data-og-url=&quot;https://aidenarea.tistory.com/entry/MSSQL-%ED%95%A9%EA%B3%84-%EA%B5%AC%ED%95%98%EA%B8%B0-SUM&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxV5pW/hyYjH2bN2t/9mtFuR8wFzLgKc3x7LG2S0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/csONLT/hyYjjUGk0j/EjKOKjO4LxfKOCXWgPXAV0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500&quot;&gt;&lt;a href=&quot;https://aidenarea.tistory.com/entry/MSSQL-합계-구하기-SUM&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aidenarea.tistory.com/entry/MSSQL-합계-구하기-SUM&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxV5pW/hyYjH2bN2t/9mtFuR8wFzLgKc3x7LG2S0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/csONLT/hyYjjUGk0j/EjKOKjO4LxfKOCXWgPXAV0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;MSSQL 합계 구하기 SUM&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;합계 구하기MSSQL에서 데이터의 합계를 구하는 방법에 대해 포스팅하겠습니다 전체데이터의 합계 또는 특정칼럼을 기준하여 그룹별로 합계를 알고 싶을 수 있습니다 이럴 때 SUM함수를 이용하여&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aidenarea.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer/DB</category>
      <category>db</category>
      <category>MSSQL</category>
      <category>sum</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/734</guid>
      <comments>https://erin-loft.tistory.com/734#entry734comment</comments>
      <pubDate>Wed, 26 Feb 2025 12:26:08 +0900</pubDate>
    </item>
    <item>
      <title>2025.02.24</title>
      <link>https://erin-loft.tistory.com/733</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/730&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/730&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740462839346&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL] CASE WHEN 표현식&quot; data-og-description=&quot;SQL Server에서 조건에 따라 서로 다른 값을 반환할 수 있는 CASE 표현식을 사용할 수 있다. 프로그래밍 언어에서 IF문과 비슷하다. 오라클의 DECODE 함수와 비슷한 기능을 하며, CASE 표현식은 ANSI SQL이&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/730&quot; data-og-url=&quot;https://erin-loft.tistory.com/730&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bFTWR9/hyYjCfgBjh/Jm9fgHBJ0pvbtfdIVX0Qf0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/V7LWr/hyYjCM6xKd/CD8weRPBdNGKPbHme177gK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/RbZyq/hyYjhI4oEu/BKwIQn08HdJfnMbBAVZRF1/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/730&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/730&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bFTWR9/hyYjCfgBjh/Jm9fgHBJ0pvbtfdIVX0Qf0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/V7LWr/hyYjCM6xKd/CD8weRPBdNGKPbHme177gK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/RbZyq/hyYjhI4oEu/BKwIQn08HdJfnMbBAVZRF1/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL] CASE WHEN 표현식&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SQL Server에서 조건에 따라 서로 다른 값을 반환할 수 있는 CASE 표현식을 사용할 수 있다. 프로그래밍 언어에서 IF문과 비슷하다. 오라클의 DECODE 함수와 비슷한 기능을 하며, CASE 표현식은 ANSI SQL이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/731&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/731&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740462850888&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL] 중복제거 DISTINCT&quot; data-og-description=&quot;SQL Server에서 중복된 행을 제거하고 한 번만 표시하고 싶으면 DISTINCT를 사용하면 된다. 중복 행을 제거하는 방법은 DISTINCT 외에도 GROUP BY 절을 사용해서 중복 행을 제거할 수 있다.SELECT DISTINCT montyp&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/731&quot; data-og-url=&quot;https://erin-loft.tistory.com/731&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SExwn/hyYjp8a9Ns/wF8MME17pVqXDCy8MR8rb0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Wlxvk/hyYjAhtTxu/f5FMaldWWfOU7E1CZpM8s1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/zzjRk/hyYjGaTJt4/xWS6jKkjKK5S0jGoYqtnFK/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/731&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/731&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SExwn/hyYjp8a9Ns/wF8MME17pVqXDCy8MR8rb0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Wlxvk/hyYjAhtTxu/f5FMaldWWfOU7E1CZpM8s1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/zzjRk/hyYjGaTJt4/xWS6jKkjKK5S0jGoYqtnFK/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL] 중복제거 DISTINCT&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SQL Server에서 중복된 행을 제거하고 한 번만 표시하고 싶으면 DISTINCT를 사용하면 된다. 중복 행을 제거하는 방법은 DISTINCT 외에도 GROUP BY 절을 사용해서 중복 행을 제거할 수 있다.SELECT DISTINCT montyp&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/732&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://erin-loft.tistory.com/732&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740462872850&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[DB/MSSQL 문자열 구분자 추가(QUOTENAME)&quot; data-og-description=&quot;QUOTENAME란?문자열 앞뒤로 구분자를 넣어 주는 기능을 한다. 구분자를 입력하지 않았을 경우에는 대괄호가 추가되는 함수이다.-- 문법QUOTENAME('대상 문자열', 구분자)-- EXPRINT(QUOTENAME ('ABCD')) ==&amp;gt; [ABCD]&quot; data-og-host=&quot;erin-loft.tistory.com&quot; data-og-source-url=&quot;https://erin-loft.tistory.com/732&quot; data-og-url=&quot;https://erin-loft.tistory.com/732&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by07M5/hyYjHHDISR/dw4zUusSVRt9BLOvKlYcFK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/4mcBW/hyYjzbNoaS/94F9XSdRPAzYor8IZMXWLk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ni0C7/hyYjqlGaN8/yo1HE3KQMbLXDnrSBUUk6k/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213&quot;&gt;&lt;a href=&quot;https://erin-loft.tistory.com/732&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://erin-loft.tistory.com/732&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by07M5/hyYjHHDISR/dw4zUusSVRt9BLOvKlYcFK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/4mcBW/hyYjzbNoaS/94F9XSdRPAzYor8IZMXWLk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ni0C7/hyYjqlGaN8/yo1HE3KQMbLXDnrSBUUk6k/img.jpg?width=237&amp;amp;height=213&amp;amp;face=0_0_237_213');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[DB/MSSQL 문자열 구분자 추가(QUOTENAME)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;QUOTENAME란?문자열 앞뒤로 구분자를 넣어 주는 기능을 한다. 구분자를 입력하지 않았을 경우에는 대괄호가 추가되는 함수이다.-- 문법QUOTENAME('대상 문자열', 구분자)-- EXPRINT(QUOTENAME ('ABCD')) ==&amp;gt; [ABCD]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;erin-loft.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;날짜 관련 프로시저를 만들고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 게임서버쪽에 코드가 있어서 그것을 프로시저로만 바꾸면 되는 과정이라 그렇게 어렵지는 않을것같다. 아마동..&lt;/p&gt;</description>
      <category>Study/TIL(Today I Learned)</category>
      <category>TIL</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/733</guid>
      <comments>https://erin-loft.tistory.com/733#entry733comment</comments>
      <pubDate>Tue, 25 Feb 2025 14:54:42 +0900</pubDate>
    </item>
    <item>
      <title>[DB/MSSQL 문자열 구분자 추가(QUOTENAME)</title>
      <link>https://erin-loft.tistory.com/732</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;QUOTENAME란?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열 앞뒤로 구분자를 넣어 주는 기능을 한다. 구분자를 입력하지 않았을 경우에는 대괄호가 추가되는 함수이다.
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;-- 문법
QUOTENAME('대상 문자열', 구분자)

-- EX
PRINT(QUOTENAME ('ABCD')) ==&amp;gt; [ABCD]
PRINT(QUOTENAME('ABCD', '''')) ==&amp;gt; 'ABCD'
​&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer/DB</category>
      <category>db</category>
      <category>MSSQL</category>
      <category>QUOTENAME</category>
      <category>구분자</category>
      <category>문자열</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/732</guid>
      <comments>https://erin-loft.tistory.com/732#entry732comment</comments>
      <pubDate>Tue, 25 Feb 2025 14:52:53 +0900</pubDate>
    </item>
    <item>
      <title>[DB/MSSQL] 중복제거 DISTINCT</title>
      <link>https://erin-loft.tistory.com/731</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL Server에서 중복된 행을 제거하고 한 번만 표시하고 싶으면 DISTINCT를 사용하면 된다. 중복 행을 제거하는 방법은 DISTINCT 외에도 GROUP BY 절을 사용해서 중복 행을 제거할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;elm&quot;&gt;&lt;code&gt;SELECT DISTINCT montype, name
	FROM mon
	WHERE montype in (1,5)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중복 행이 제거되고 두 개의 컬럼이 오름차순으로 정렬되어 조회된다. 조회된 결과를 임의로 정렬을 변경하고 싶다면 ORDER BY 절을 사용하면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;GROUP BY&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GROUP BY절을 사용하여 중복 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;SELECT montype, name
	FROM
	WHERE montype in (1,5)
	GROUP BY montype, name
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GROUP BY 절을 사용하여 중복 행을 제거할 경우 그룹 함수를 사용하여 최댓값(MAX) 또는 최솟값(MIN)을 추출하여 정렬을 변경할 수 있다. 그룹 함수를 사용했기 때문에 조회된 결과 건수는 동일하다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Computer/DB</category>
      <category>db</category>
      <category>distinct</category>
      <category>MSSQL</category>
      <category>중복제거</category>
      <author>에린_1</author>
      <guid isPermaLink="true">https://erin-loft.tistory.com/731</guid>
      <comments>https://erin-loft.tistory.com/731#entry731comment</comments>
      <pubDate>Tue, 25 Feb 2025 14:51:49 +0900</pubDate>
    </item>
  </channel>
</rss>