전체 글 41

[MSSQL] [날짜] 1.날짜 연산 함수(DATEADD, DATEDIFF)

자주 사용하면서 찾게되는 날짜함수를 정리해본다. 참고로, 요즘은 다들 글로벌 서비스를 하고 있어 날짜 반환 함수로 GETDATE()보다는 타임오프셋을 확인할 수 있는 SYSDATETIMEOFFSET()을 많이 사용하게 된다. 예제SQL에서는 SYSDATETIMEOFFSET()을 사용하였다.DATEADD: 날짜에 원하는 일수를 더하거나 빼서 출력해 주는 함수구문: DATEADD (datepart, number, date ) -- 지정된 date의 지정된 datepart에 간격을 더하여 새 datetime 값을 반환예제SQLSELECT DATEADD(DAY, -1, SYSDATETIMEOFFSET()) AS [어제] , DATEADD(DAY, 1, SYSDATETIMEOFFSET()) AS [내일] ; DA..

DB/MSSQL 2024.02.28

[MSSQL] 컬럼 문자열 합치기 (STRING_AGG(), STUFF())

여러 행의 컬럼 값을 하나의 문자열로 합칠 때 사용. 2017 이상 부터 지원되는 STRING_AGG()를 사용하는 것이 제일 간편하며, 아래 샘플 쿼리로 사용법에 대해 바로 확인 가능하다. 1) STRING_AGG() + SQL Server 2017 이상의 버전에서 지원 + GROUP BY 절과 함께 사용 가능 & ORDER BY 절을 사용하여 정렬이 가능하며 ORDER BY 절은 생략할 수 있음. + 형식) STRING_AGG("합칠 대상 컬럼명", "구분자") [WITHIN GROUP(ORDER BY "정렬하고자하는 컬럼명")] -- ---------------------------------------- -- #1. [LastName] 문자열 합치기 -- -----------------------..

DB/MSSQL 2024.02.27

[MSSQL] 이모지(Emoji) 저장 및 비교 조회하기

이모지(Emoji)는 그림 형태의 문자로, MSSQL에서 데이터 저장 시 유니코드를 지원하는 NVARCHAR 데이터타입을 사용하면 그대로 저장/조회가 가능하다. 다만 적재된 데이터와 이모지를 비교검색할 때 이슈가 발생할 수 있다. 그리고 유니크 인덱스 생성 등 중복체크 시 중복 이슈가 발생할 수 있다. 해결안) 기존 서비스 운영 환경에 영향이 없으면서 특정 비즈니스를 처리하기 위해서 NVARCHAR 데이터타입으로 저장이슈는 없으나 조회/중복체크 등으로 인한 이슈 발생 시 컬럼레벨 별도의 Collation을 설정하는 것으로 대응이 가능하다. 참고)-- 이모지 테스트 샘플 CREATE TABLE dbo.emojiTest ( id INT IDENTITY, col1 NVARCHAR(256), -- COLLATE..

DB/MSSQL 2024.02.23

유니코드(UNICODE) 인코딩: UCS-2, UTF-16, UTF-8, UTF-32

기본적으로 컴퓨터는 숫자만 처리할 수 있어 문자와 기타 문자를 각각에 번호를 할당하여 저장한다. 유니코드 표준이 개발되기 전에는 이러한 숫자를 할당하기 위해 문자 인코딩이라는 다양한 시스템이 있었으나, 두 개의 인코딩이 두 개의 서로 다른 문자에 대해 동일한 숫자를 사용하거나 동일한 문자에 대해 서로 다른 숫자를 사용하는 경우가 발생하여 이를 해결하기 위한 "유니코드"가 등장하게 된다. UNICODE UNICODE는 모든 문자를 특정 숫자(unique number)에 1:1 매핑을 제공하여 어떤 환경(플랫폼, 장치, 애플리케이션 또는 언어 등)에서도 같은 언어를 볼 수 있도록 한다. 유니코드를 표현하는 방식(인코딩) 으로 UCS-2, UTF-16, UTF-8, UTF-32 등이 있다. 참고) 인코딩, E..

DB 2024.02.21

[MSSQL] DB서버/컬럼 레벨 셋팅된 Collation 조회 및 Collation level

Collation은 데이터에 대한 정렬 규칙과 대/소문자 및 악센트 구분 속성 등을 제공한다. (char, varchar, nchar, nvarchar 등의 문자 데이터 형식과 함께 사용) SQL Server 인스턴스의 기본 데이터 정렬(Collation)은 설치 중에 정의되므로 여러 언어를 반영하는 문자 데이터를 저장해야 하는 경우 데이터 정렬 설정을 신중하게 지정해야 한다. 보통 한국에서는 Korean_Wansung_CI_AS를 사용하게 되는데, 배포 지역에 따라 다르게 설정되어야 하는 경우 현지에서 사용하는 Collation을 확인하여 셋팅을 하게 된다. 현재 셋팅된 DB 서버/컬럼 셋팅을 조회해보면 다음과 같다. -- MSSQL에서 지원하는 Collation 전체 조회 SELECT * FROM f..

DB/MSSQL 2024.02.21

[MariaDB] GROUP_CONCAT() 사용 : 문자열 합치기

MSSQL에서 2017(14.x)이상부터 사용가능한 STRING_AGG()와 동일한 기능으로, MariaDB에서는 GROUP_CONCAT()함수를 사용한다. # 사용법● 기본형 : GROUP_CONCAT(컬럼명) 예) SELECT GROUP_CONCAT(col1) ● 구분자 변경 : GROUP_CONCAT(컬럼명 separator '구분자') 예) SELECT GROUP_CONCAT(col1 separator '|') ● 중복 제거 : GROUP_CONCAT(distinct 컬럼명) 예) SELECT GROUP_CONCAT(distinct col1) ● 문자열 정렬 : GROUP_CONCAT(컬럼명 order by 컬럼명) 예) SELECT GROUP_CONCAT(col1 order by col2 ) 참..

DB/MariaDB 2024.01.26

[MariaDB] error while loading shared libraries: libncurses.so.5 에러 확인 및 조치

MariaDB 접속 시도 시 또 에러를 만났다. 헉!!! 난 삽질 전문이가보다. 에러란 에러는 다 만나는 듯;;; 그래도 요 에러는 아래 해결책으로 통과;;; 또 뭐가 나오려나...ㅎㅎ # 에러메시지mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory # 해결책다음 명령어 실행 sudo apt install libncurses5

DB/MariaDB 2024.01.24

[MS-SQL] CONVERT()함수의 스타일 번호별 날짜 변환 형식 

-- 자주 사용하는 스타일 SELECT CONVERT(CHAR(8), GETDATE(), 112) -- 20240123 SELECT CONVERT(CHAR(19), GETDATE(), 121) -- 2024-01-23 16:39:50.623 스타일번호 쿼리 결과 코드 0 CONVERT(CHAR(19), GETDATE(), 0) 01 23 2024 4:39PM MM DD YYYY H:MM 1 CONVERT(CHAR(10), GETDATE(), 1) 01/23/24 MM/DD/YYYY 2 CONVERT(CHAR(8), GETDATE(), 2) 24.01.23 YY.MM.DD 3 CONVERT(CHAR(8), GETDATE(), 3) 23/01/24 DD/MM/YY 4 CONVERT(CHAR(8), GETDA..

DB/MSSQL 2024.01.23

[MS-SQL] 동적쿼리에서 OUTPUT Parameter 사용 예제

DMV를 활용하여 특정 데이터를 조회 시 사용하게 된 쿼리로, 아래 예제를 통해 바로 실행 및 확인 가능하다. -- OUTPUT 파라미터 1개 지정 시 BEGIN DECLARE @sql NVARCHAR(1000) DECLARE @param NVARCHAR(500) DECLARE @result DATETIMEOFFSET(3) SET @sql = 'SELECT @Today = SYSDATETIMEOFFSET()' SET @param = '@Today DATETIMEOFFSET(3) OUTPUT' EXEC SP_EXECUTESQL @sql, @param, @Today=@result OUTPUT SELECT @result AS [Today] END-- OUTPUT 파라미터 여러개 지정 시 BEGIN DECLAR..

DB/MSSQL 2024.01.23
320x100