DataBase 13

SQL Server와 PostgreSQL에서 문자열 비교 차이점

DB 마이그레이션 작업 중에 생각하지 못한 부분을 발견했다. 마이그레이션 작업은 대부분 함수를 해당 DB 엔진에 맞게 수정하는 것이였는데, 쿼리가 아예 똑같고 데이터도 똑같은데 결과 가 달라서 보니 SQL Server와 PostgreSQL의 문자열 비교 동작 방식이 다르기 때문에 나타난 현상이었다. 그에 관련해 알아본 것을 포스팅한다. 데이터베이스 관리 시스템인 SQL Server와 PostgreSQL은 문자열 비교에 있어서 서로 다른 동작 방식을 가지고 있다. 이러한 차이점은 두 개 이상의 데이터베이스 관리 시스템을 사용하는 경우에는 예기치 않은 결과를 초래할 수 있기 때문에, 해당 사항을 인지하고 있는 것이 좋겠다. SQL Server와 PostgreSQL의 공백 비교 아래 예제를 각 데이터베이스에서..

DataBase 2023.08.03

[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.', ' ..

DataBase/mssql 2023.07.07

[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..

DataBase/mssql 2023.07.05

MSSQL : FORMAT함수

2023.06.02 - [DataBase/mssql] - CONVERT, FORMAT함수 : 날짜(DATE) 포맷 변환 CONVERT, FORMAT함수 : 날짜(DATE) 포맷 변환 1.CONVERT CONVERT 함수 CONVERT 함수는 데이터 형식을 변환하기 위해 사용된다. 날짜와 시간 데이터 형식을 변환하는 데 자주 사용되며, 다양한 날짜 및 시간 형식을 지원하고있다. CONVERT 함수의 기본 bravesuccess.tistory.com 위 포스팅을 작성 중에 FORMAT 함수가 다양한 서식 변환을 제공하여 더 자세히 알아보았더니, FORMAT 함수는 날짜, 숫자, 문자열, 시간 외에도 다른 데이터 유형에 대한 서식 지정을 제공하고 있었다. 때문에 FORMAT 함수를 사용하여 다양한 데이터 유형..

DataBase/mssql 2023.06.07

CONVERT, FORMAT함수 : 날짜(DATE) 포맷 변환

1.CONVERT CONVERT 함수 CONVERT 함수는 데이터 형식을 변환하기 위해 사용된다. 날짜와 시간 데이터 형식을 변환하는 데 자주 사용되며, 다양한 날짜 및 시간 형식을 지원하고있다. CONVERT 함수의 기본 구문은 다음과 같다: CONVERT(data_type, expression, style) data_type : 변환하려는 데이터의 형식 expression : 실제 데이터 값 style : 변환할 날짜 및 시간 형식. CONVERT 함수 사용 예제 1. 날짜 가장 일반적인 사용 사례 중 하나인 날짜 형식을 변환하는 것을 알아보자. 예를 들어, '2023-06-01' 날짜를 '01-Jun-2023'과 같은 형식으로 변환하고 싶다고 할 때, CONVERT 함수를 사용하여 다음과 같이 변환..

DataBase/mssql 2023.06.02

SQL Server의 OUTPUT 절: 데이터 변경 작업의 결과 추적 및 활용

sql 튜닝 관련 강의를 듣다가 OUTPUT절에 대해서 뒤늦게 알게 되었다. DELETE, UPDATE, INSERT 작업 뒤에 바로 해당 컬럼을 조회 할 수 있는 좋은 기능이라 이에 대해 알아보았다. 1.개요 OUTPUT 절은 INSERT, UPDATE 및 DELETE 문에서 사용할 수 있다. 이는 데이터 변경 작업의 결과를 반환하는 데 사용된다. 이를 통해 변경된 데이터의 상태를 확인하거나 다른 작업에 활용할 수 있다. 2.구문 INSERT INSERT INTO 테이블명 (컬럼1, 컬럼2, ...) OUTPUT inserted.컬럼1, inserted.컬럼2, ... VALUES (값1, 값2, ...) DELETE DELETE FROM 테이블명 OUTPUT deleted.컬럼1, deleted.컬럼..

DataBase/mssql 2023.05.23

MSSQL DATEDIFF 함수를 활용한 날짜 간격 계산

MSSQL 데이터베이스에서 날짜와 시간을 처리하고 계산해야 하는것은 매우 자주 있는 일이다. MSSQL은 날짜 간의 차이를 계산하는 다양한 함수들을 제공한다. 이번 글에서는 그 중에서도 DATEDIFF 함수에 대해 알아보았다. DATEDIFF 함수는 두 날짜 사이의 차이를 계산하는 데 사용된다. 주로 날짜, 시간, 분, 초 등의 단위를 기준으로 기간을 계산할 때 활용된다. 함수의 기본 구문은 다음과 같다: DATEDIFF(datepart, startdate, enddate) datepart: 계산에 사용할 단위를 지정. 예를 들어, 'year'는 연도 간의 차이를 계산하고, 'month'는 월 간의 차이를 계산한다. startdate: 시작 날짜/시간. enddate: 종료 날짜/시간. datepart옵..

DataBase/mssql 2023.05.19

STRING_SPLIT [파라미터 잘라서 활용하기]

STRING_SPLIT 문자열을 지정된 구분 문자에 따라서 행으로 분할하는 테이블 반환 함수이다. SQL Server 2016 (13.x) 이상 버전에서만 지원된다. 구문 STRING_SPLIT ( string , separator [ , enable_ordinal ] ) 인자 string - 구분 문자로 자를 대상 문자열 separator - 구분 문자 (* 단일 문자 : varhar(1), char(1) ...) enable_ordinal - Azure 또는 SQL Server 2022(16.x)부터 사용가능 - 시퀀스 값을 출력 할지 말지 정하는 옵션 값. 1로 지정하면 1부터 시작되는 시퀀스 열이 출력된다. 사용법 기본 사용법은 매우 간단하다. SELECT value FROM STRING_SPLI..

DataBase/mssql 2023.03.02

기초 : 데이터

데이터 입력INSERT INTO 테이블이름 ( 필드명1, 필드명2 ... ) VALUES (필드값1, 핃드값2 ...) ;INSERT INTO 테이블이름 VALUES (필드값1, 필드값2...) ; 데이터 삭제DELETE FROM 테이블이름 [WHRER 조건] ; 데이터 수정UPDATE 테이블이름 SET 필드명=필드값 [WHERE 조건] ;UPDATE 테이블이름 SET 필드명=산술식 [WHERE 조건] ; 데이터 검색1. 기본 사용SELECT [destinct] 검색할 필드명 FROM 테이블 이름 [ WHERE 검색 조건][ ORDER BY 필드명 [asc or desc] ] [GROUP BY 필드명] [HAVING 검색조건] ; 2. 사용예제▷ 기본적 검색SELECT name FROM member WH..

DataBase 2016.11.09

기초 : 테이블

테이블* 가장 기본적인 Data 저장 단위 테이블 보기show tables; 테이블 필드 보기desc tables; 테이블 생성CREATE TABLE 테이블이름 (필드명1 데이터타입 [NOT NULL],필드명2 데이터타입 [NOT NULL],PRIMARY KEY(필드명1)); 테이블 삭제1. 데이터 삭제DELETE FROM 테이블 이름 [WHERE 조건] ;* 테이블은 삭제되지 않고 테이블 내 데이터만 삭제된다.2. 테이블 삭제DROP TABLE 테이블 이름 ;* 테이블을 삭제한다. 테이블 변경1. 테이블 이름 변경ALTER TABLE 원래 테이블 이름 RENAME 변경할 테이블 이름 ;2. 필드 추가ALTER TABLE 테이블 이름 ADD [COLUMN] 필드명 데이터타입 ;3. 필드 속성 변경ALTE..

DataBase 2016.11.09