본문 바로가기
  • [성공하는 개발자] - Developer

db20

[MSSQL] CHOOSE 함수 사용법 SQL Server 2012 버전부터 CHOOSE 함수가 추가되었다. CHOOSE 함수는 첫 번째 인자의 인덱스에 해당하는 값을 리턴하는 함수이다. CASE 문으로도 비슷한 결과를 만들 수 있지만, 인덱스에 대한 단순 값을 반환할 경우 CHOOSE 함수를 사용하면 쿼리문이 조금 더 단순해질 수 있다. CHOOSE ( index, val_1, val_2 [, val_n ] ) SELECT CHOOSE(1, 'A', 'B', 'C') AS result1 , CHOOSE(2, 'A', 'B', 'C') AS result2 , CHOOSE(4, 'A', 'B', 'C') AS result3 첫번째 인자의 인덱스에 해당하는 순서의 값을 리턴한다. 인덱스에 해당하는 값이 없으면 NULL을 리턴한다. SELECT D.. 2022. 4. 12.
[MSSQL] MERGE 문 사용법 (DUAL, UPDATE와 INSERT를 한번에) MERGE 문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능하다. MERGE 문을 사용하지 않을 경우 해당 조건으로 테이블을 SELECT 한 후 IF 조건을 사용하여 UPDATE나 INSERT로 분기하는 로직을 작성해야 하는 번거로움이 있다. MERGE 문의 경우 단일(한개의) 테이블에 UPDATE 또는 INSERT를 하는 경우 많이 사용하지만, 두개의 테이블을 비교하거나 서브 쿼리의 결과에 따라서 UPDATE, INSERT 작업이 가능하다. | 단일 테이블 사용법 (DUAL) 오라클에서는 DUAL이라는 dummy 테이블을 USING 절에 사용하면 단일 테이블 작업이 간단하지만, MSSQL에서는 DUAL 테이블이 없기 때문에 du.. 2022. 4. 12.
[MSSQL] TRANSLATE 함수 사용법 (여러개 치환, 다중 치환) SQL Server 2017 버전부터 TRANSLATE 함수를 사용할 수 있게 되었다. 오라클에서는 오래전 부터 사용이 가능했지만 MSSQL에서는 신규로 추가된 함수이다. REPLACE 함수를 사용하여 여러 개의 문자를 치환하기 위해서는 REPLACE 함수를 중첩해서 사용해야 하는데, 이런 경우 쿼리문이 복잡해진다. TRANSLATE 함수를 사용하여 여러 개의 문자를 치환하는 것은 간단하지만, 치환하지 않고 제거는 쉽지 않기 때문에 이런 경우는 REPLACE 함수를 사용하는 것이 효율적일 수 있다. TRANSLATE("문자열", "바꿀문자", "변환문자") 바꿀문자와 변환문자의 길이는 동일해야한다. 문자열에 바꿀문자가 있을 경우 바꿀문자의 자리수에 해당하는 변환문자로 치환된다. TRANSLATE 함수는 .. 2022. 4. 12.
[MSSQL] 소수점 이하 0 제거 방법 SQL Server 2012 버전부터 FORMAT() 함수를 사용하여 소수점의 형식을 변경할 수 있는 기능이 추가 되었다. 오라클 SQL의 TO_CHAR 함수와 FM을 사용하는 방법과 비슷하다. SQL Server 2012 이전 버전에서는 DECIMAL 형의 값을 FLOAT 형으로 변환하는 방법으로 소수점 이하의 0값을 제거하였지만, FORMAT 함수를 사용하면 간편하게 변환이 가능하다. SELECT FORMAT(123.456700, '##0.######') AS result 주의할 점은 숫자의 최대 자리수와 포맷(# or 0)의 길이가 일치해야 한다. 만약 소수점 이하의 값의 길이보다 "#"의 길이가 짧으면 해당 위치에서 반올림하여 표시한다. #은 수치값의 "0"을 제거하고, "0"은 해당 자리에 "0.. 2022. 4. 11.