본문 바로가기
반응형

개발132

[mssql] lock과 isolation level mssql은 특정 테이블을 select 하는 도중에 해당 테이블에 update문이나 insert문, delete문을 실행할 수 없다. 당연한 것 처럼 들리지만, oracle은 select와 상관없이 수행이 가능하다. 트랜잭션이 많은 업무시스템에서는 치명적으로 다가 올 수 있다. 가령, 테이블 몇개를 join 하여 통계 형태의 화면을 만들었다고 가정하고, 사용자가 그 화면을 자주 많이 조회한다면, 해당 테이블은 조회가 끝날때 까지 insert, update, delete를 할 수 없게 된다. 반대로 테이블에 insert, update, delete 가 완료되지 않을 경우 select를 할 수가 없다. 업무가 느려질테고, 타 시스템과 인터페이스 이후 데이터를 업데이트 및 select 한다고 했을때, time.. 2021. 1. 17.
[mssql] 오라클의 LISTAGG 를 mssql에서 사용 오라클의 LISTAGG 효과를 MSSQL에서 구현 시 -- 오라클 (구분자로 ^^ 사용) SELECT CAST(LISTAGG(컬럼, '^^') WITHIN GROUP (ORDER BY 정렬컬럼) AS VARCHAR2(1000) FROM 테이블명 WHERE 조건값; -- mssql (구분자로 ^^ 사용) SELECT CAST(STUFF((SELECT '^^'+컬럼 FROM 테이블명 WHERE 조건값 ORDER BY 정렬컬럼 FOR XML PATH('')), 1, 2, '') AS VARCHAR(1000)) -- 2는 구분자의 길이값 ; -- 만약 문자열에 html 특수문자가 포함되어 있을 경우 (ex. &) -- mssql (구분자로 ^^ 사용) SELECT STUFF((SELECT '^^'+컬럼 FROM.. 2021. 1. 17.
[mssql] CONVERT 날짜 변환표 MSSQL 날짜 변환표 번호 쿼리 결과 표시형식 20 CONVERT(CHAR(19), GETDATE(), 20) 2000-01-02 13:14:15 YYYY-MM-DD HH24:MM:SS 23 CONVERT(CHAR(10), GETDATE(), 23) 2000-01-02 YYYY-MM-DD 111 CONVERT(CHAR(10), GETDATE(), 111) 2000/01/02 YYYY/MM/DD 112 CONVERT(CHAR(8), GETDATE(), 112) 20000102 YYYYMMDD 조합필요 CONVERT(VARCHAR, GETDATE(),112)+REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108), ':','') 20000102131415 YYYYMMDDHH24MIS.. 2021. 1. 17.
[mssql] 테이블 목록 조회 MSSQL 테이블 목록 조회 쿼리 시스템에 등록된 모든 테이블을 목록을 출력해준다. -- 첫번째 방법 select * from information_schema.tables; -- 두번째 방법 select name from sysobjects where type='U' ; -- 세번째 방법 SELECT TABLE_NAME, ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME, ORDINAL_POSITION; 2021. 1. 17.
oracle -> mssql 변경 운영중인 시스템의 DataBase를 변경하는 일이 발생! 변경하는 과정을 정리하면 의미가 있을 것 같다. 1. mssql 설치 및 DataBase 생성 이후 캐릭터셋을 확인하자. SELECT * FROM INFORMATION_SCHEMA.SCHEMATA DEFAULT_CHARACTER_SET_NAME 값이 iso1로 표시된다. 이러면 한글이 입력되지 않거나 깨질 수 있으니 변경하자 ALTER DATABASE 데이터베이스명 COLLATE Korean_Wansung_CI_AS 만약 권한에러가 발생하면 DBA에게 요청 2. 마이그레이션 툴은 "ESF Database Migration Toolkit"을 사용 변환툴 : https://www.dbsofts.com/ ESF Database Migration Tool.. 2021. 1. 17.
[oracle] 오라클 한글 3byte를 2byte로 변경하여 byte 자르기 프로젝트에서 사용하는 DB는 오라클12C 이며, 캐릭터셋은 AL32UTF8로 한글이 3byte이다. -- 오라클 캐릭터셋 확인 쿼리 select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET'; 타 시스템으로 데이터 전송 중 자릿수 초과 오류가 발생하였다. 협의 당시 특정 컬럼의 자릿수는 varchar 10 이였는데, 프로젝트에서 사용하는 varchar 10 은 10 char를 의미했었고, 다른 시스템에서는 10 byte였으며, 타 시스템의 캐릭터 셋은 "KO16MSWIN949"로 한글이 2byte였다. * KO16KSC5601 완성형 한글- 일반적으로 많이 사용되며 2350자의 한글, 4888자의 한자, 히라카나, 카타카나, 영문.. 2021. 1. 17.
반응형