반응형
반응형

[PostgreSQL] 행 순서(ROW NUMBER)에 조건 적용하기

SELECT *
  FROM (SELECT ROW_NUMBER() OVER (ORDER BY DATE) AS ROW, *
          FROM TEST_TABLE LIMIT 10) T;
          
          
          
          
-- 짝수번째 행만 조회하는 쿼리
SELECT *
  FROM (SELECT ROW_NUMBER() OVER (ORDER BY DATE) AS ROW, *
          FROM TEST_TABLE LIMIT 10) T
  WHERE ROW%2 = 0;

 

SELECT
	product_id,
	product_name,
	group_id,
	ROW_NUMBER () OVER (ORDER BY product_id)
FROM
	products;
반응형
반응형

[PostgresSQL] 컬럼 내 특정 문자로 split 후 값 출력

    사용법은 split_part('원래 문자열', '자를 문자', 위치) 로 사용한다. 

postgresql 에서 문자열 또는 필드를 붙일 경우는 concat 함수를 사용한다.

  • 문자열 합치기: '||' 연산자
  • 문자열 합치기: CONCAT() 함수
  • 구분자를 포함하여 문자열 합치기: CONCAT_WS() 함수


 

 

-- split_part(컬럼,자르고자하는 문자, 인덱스)


-- ex
select split_part(tel,'-',4)
from test
-- test 테이블의 tel 컬럼에서 - 문자로 자른 후 4번째에 있는 데이터를 출력 (index는 0이 아닌 1부터 시작)




update 테이블이름 set 
  year = split_part(date::TEXT, '-', 1)::SMALLINT
, month=split_part(date::TEXT, '-', 2)::SMALLINT

-- concat 

SELECT employee_id,first_name,last_name,
concat(first_name,'-',last_name) "Name of the Employee" 
FROM employees
WHERE department_id=100;

SELECT	*
	, col_1 || ', ' || col_2 AS db_name
	, id || ' : ' || col_2 AS db_id
FROM char_type_test;

-- (3) CONCAT_WS : CONCAT With Separator
-- : CONCAT_WS(separator, str_1, str_2, ...);

SELECT 	*
	, CONCAT_WS(', ', col_1, col_2) AS db_name_3
	, CONCAT_WS(' : ', id, col_2) AS db_id_3
FROM char_type_test;
반응형
반응형

[MSSQL] 트랜잭션 로그가 꽉 차서 해결할때. 로그 축소

 

DB서버가 용량 부족이라서 확인해보니 로그파일이 37기가!!!

 

바로 트랜잭션 축소 해버림. 

DBCC SHRINKFILE   
(  
    { file_name | file_id }   
    { [ , EMPTYFILE ]   
    | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]  
    }  
)  
[ WITH NO_INFOMSGS ]  



--https://docs.microsoft.com/ko-kr/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-ver15
-- DB log 축소 
 
USE [DataBase];

ALTER DATABASE [DataBase] SET RECOVERY SIMPLE;

-- 로그파일을 10MB로 축소

DBCC SHRINKFILE ([DataBase_Log], 10);

ALTER DATABASE [DataBase] 
SET RECOVERY FULL;
-- 로그 파일을 지정한 대상 크기로 축소

USE AdventureWorks2012;  
GO  

-- Truncate the log by changing the database recovery model to SIMPLE.  
ALTER DATABASE AdventureWorks2012  
SET RECOVERY SIMPLE;  
GO  

-- Shrink the truncated log file to 1 MB.  
DBCC SHRINKFILE (AdventureWorks2012_Log, 1);  
GO  

-- Reset the database recovery model.  
ALTER DATABASE AdventureWorks2012  
SET RECOVERY FULL;  
GO  

 

https://docs.microsoft.com/ko-kr/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-ver15 

 

DBCC SHRINKFILE(Transact-SQL) - SQL Server

DBCC SHRINKFILE(Transact-SQL)

docs.microsoft.com

 

반응형
반응형

 

CROSS APPLY 와 INNER JOIN

CROSS APPLY 와 INNER JOIN 은 동일한 의미를 지니게 됩니다.

아래 3개의 쿼리를 실행하고 나온 결과값을 확인해 보겠습니다.

SELECT * FROM FIRST_TABLE FT CROSS APPLY APPLY_FUNCTION(FT.C1)


SELECT * FROM FIRST_TABLE FT CROSS APPLY ( SELECT * FROM SECOND_TABLE ST WHERE ST.C1 = FT.C1 ) ST
 

SELECT * FROM FIRST_TABLE FT INNER JOIN SECOND_TABLE ST ON ST.C1 = FT.C1



OUTER APPLY 와 LEFT OUTER JOIN

OUTER APPLY 와 LEFT OUTER JOIN 역시 동일한 의미를 지니게 됩니다.

SELECT * FROM FIRST_TABLE FT OUTER APPLY APPLY_FUNCTION(FT.C1)



SELECT * FROM FIRST_TABLE FT OUTER APPLY ( SELECT * FROM SECOND_TABLE ST WHERE ST.C1 = FT.C1 ) ST



SELECT * FROM FIRST_TABLE FT LEFT OUTER JOIN SECOND_TABLE ST ON ST.C1 = FT.C1

반응형
반응형

update select 로 json data 변경하기

 

json_value, json_modify

-- update select 로 json data 변경하기 

 UPDATE AA  SET 
        AA.컬럼1 = JSON_MODIFY(BB.컬럼1,'$.must.title_inner',JSON_VALUE(BB.컬럼1, '$.must.title'))  
   from Table01 AS AA, Table01 AS BB 
  where BB.key = AA.KEY 
    

위 update문 옆에는 Alias로 배치하고 나머지 쿼리를 해보면 된다. 

 

일단 update 전에 select로 데이터 테스트는 필수!!!

 

잘못하면 훅! 간다~ 

반응형
반응형

기본 함수를 사용하여 JSON 데이터 유효성 검사, 쿼리, 변경(SQL Server)

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col) > 0 

https://docs.microsoft.com/ko-kr/sql/t-sql/functions/isjson-transact-sql?view=sql-server-ver15 

 

ISJSON(Transact-SQL) - SQL Server

ISJSON(Transact-SQL)

docs.microsoft.com

 

반응형

+ Recent posts