DB 28

[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

[MariaDB] Illegal mix of collations 1267 : collation 확인 및 조치

MariaDB에 쿼리를 실행하다가 오류코드 1267을 만났다면, 먼저 collation 설정변수 확인 하지만 해당 변수 값을 변경해서 실행해도 동일한 에러가 발생할 수 있다...처음부터 신경썼어야..;; 간단한 해결책은 (쿼리변경), 해당 쿼리의 검색조건 컬럼 오른쪽에 'collate collation명 (ex) utf8mb4_general_ci)'을 추가하여 쿼리 실행 위와 같이 진행하는 편이 관련 변수 변경하고 동일쿼리 실행테스트 하는 시간을 줄여줄 것이다.; collation은 connection/database/server 레벨로 상이할 수 있으며, table/column별로도 상이할 수 있다. 골치 아픔.. 구글링을 해보면, 변수 설정을 변경 후 테스트해 보는 글들이 많은데, 동일한 에러를 계속..

DB/MariaDB 2024.01.14
320x100