본문 바로가기

DataBase13

SQL Server와 PostgreSQL에서 문자열 비교 차이점 DB 마이그레이션 작업 중에 생각하지 못한 부분을 발견했다. 마이그레이션 작업은 대부분 함수를 해당 DB 엔진에 맞게 수정하는 것이였는데, 쿼리가 아예 똑같고 데이터도 똑같은데 결과 가 달라서 보니 SQL Server와 PostgreSQL의 문자열 비교 동작 방식이 다르기 때문에 나타난 현상이었다. 그에 관련해 알아본 것을 포스팅한다. 데이터베이스 관리 시스템인 SQL Server와 PostgreSQL은 문자열 비교에 있어서 서로 다른 동작 방식을 가지고 있다. 이러한 차이점은 두 개 이상의 데이터베이스 관리 시스템을 사용하는 경우에는 예기치 않은 결과를 초래할 수 있기 때문에, 해당 사항을 인지하고 있는 것이 좋겠다. SQL Server와 PostgreSQL의 공백 비교 아래 예제를 각 데이터베이스에서.. 2023. 8. 3.
[MSSQL] STRING_SPLIT 입력 순서대로 자르기 MS SQL의 STRING_SPLIT 함수는 문자열을 지정한 구분자 기준으로 나눈 결과를 반환한다. 그러나 STRING_SPLIT 함수는 결과의 출력 순서를 보장하지 않는, 즉 데이터베이스의 내부 구현 및 실행 계획에 따라 임의의 순서로 결과가 출력된다. 서비스를 운영하다보면 다른 기능에서 받은 파라미터 순서대로 결과를 출력해야 할 때가 있다. 만약 사용하는 SQL Server 버전이 2022라면 아래와 같이 새로 추가된 옵션(enable_ordinal)으로 출력 순서를 제어할 수 있을지 모른다. STRING_SPLIT ( string , separator [ , enable_ordinal ] ) SELECT * FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' .. 2023. 7. 7.
[MSSQL] 컬럼 검색하기 특정 컬럼에 하나의 단어 검색 로직 --입력받을 파라미터 DECLARE @str NVARCHAR(MAX) SELECT * FROM table WHERE column LIKE '%'+@str+'%' 특정 컬럼에 입력 단어들을 검색하는 로직 --입력받을 파라미터 DECLARE @str NVARCHAR(MAX) SELECT * FROM table WHERE column LIKE (SELECT '%' + STRING_AGG(value, '%') +'%' FROM STRING_SPLIT(@str,',') 입력 단어 모두 특정 컬럼에 존재해야 한다. 여러 컬럼에 입력 단어들을 검색하는 로직 --입력받을 파라미터 DECLARE @str NVARCHAR(MAX) SELECT * FROM table WHERE ( (SE.. 2023. 7. 5.
MSSQL : FORMAT함수 2023.06.02 - [DataBase/mssql] - CONVERT, FORMAT함수 : 날짜(DATE) 포맷 변환 CONVERT, FORMAT함수 : 날짜(DATE) 포맷 변환 1.CONVERT CONVERT 함수 CONVERT 함수는 데이터 형식을 변환하기 위해 사용된다. 날짜와 시간 데이터 형식을 변환하는 데 자주 사용되며, 다양한 날짜 및 시간 형식을 지원하고있다. CONVERT 함수의 기본 bravesuccess.tistory.com 위 포스팅을 작성 중에 FORMAT 함수가 다양한 서식 변환을 제공하여 더 자세히 알아보았더니, FORMAT 함수는 날짜, 숫자, 문자열, 시간 외에도 다른 데이터 유형에 대한 서식 지정을 제공하고 있었다. 때문에 FORMAT 함수를 사용하여 다양한 데이터 유형.. 2023. 6. 7.
반응형