날짜가 포함된 테이블명을 조회할때 sysdate와 concat 가능한가요? 0 2 1,674

by Daff [Oracle 기초] [2021.04.01 20:27:18]


테이블명도 concat 가능한가요?

테이블명칭이 날짜별로 바뀌는데 예를들어 이렇게 4월1일자 4월2일자 바뀐다면(생성된다면?)

select id, name, code from A210401001_job where id =10; 

select id, name, code from A210402001_job where id =10; 

이렇게 날짜변환함수와 concat을 사용해서 테이블을 조회 할수 있나요.. 안되서 질문올리는거지만요;;;

select id, name, code from A||to_char(sysdate,'YYMMDD')001_job where id =10; 

컬럼에는 되는데 테이블명에는 안되는것 같아서..  어떤식으로 할 수 있을지..

 

++ 추가

구글링해서 이런 function을 만들긴 했는데 이것도 컬럼에는 적용되고 테이블명에는 마찬가지..

CREATE OR REPLACE FUNCTION F_YYMMDD
RETURN VARCHAR2
IS
v_SYSDATE VARCHAR2(20);
BEGIN
SELECT to_char(SYSDATE,'YYMMDD') into v_SYSDATE FROM DUAL;
RETURN(v_SYSDATE);
EXCEPTION
WHEN OTHERS THEN
RETURN(NULL);
END;
/

++ 추가

혼자 구글링 중이요.. 이 정규식도 활용할 수 있을까요..

SELECT * 
FROM (SELECT TABLE_NAME, REGEXP_SUBSTR(TABLE_NAME, '\d{2}\d{2}\d{2}')YYMMDD FROM USER_TABLES)
WHERE YYMMDD IS NOT NULL
AND YYMMDD = to_char(sysdate,'YYMMDD');
SELECT TABLE_NAME FROM USER_TABLES where REGEXP_SUBSTR(TABLE_NAME, '\d{2}\d{2}\d{2}') = to_char(sysdate,'YYMMDD') ;

 

by 뉴비디비 [2021.04.01 23:07:04]

Object 명 (테이블이름, 칼럼이름 등)을 가변으로 작성하시려면 동적쿼리로 구현하셔야 합니다. 
http://www.gurubee.net/lecture/1720 (동적쿼리 참고)
 


by Daff [2021.04.02 09:22:18]

동적쿼리... 는 어렵군요.. ㅜ

이런식으로 linux shell에서 date변수를 받아서 sql을 실행하는 걸로 해보았는데 임시로 될거같기도 하구요.. 

==== test.sql

select *  from A&1001_job;

====  test.sh

#!/bin/bash

export v_date=`date "+%y%m%d"`

echo $v_date

sqlplus product/product@poims @test.sql $v_date

==== run in linux

./test.sh

210401

old : A&1001_job;

new : A210401001_job;

 

++ 추가

shell 안쓰고 해도 되네요..

sqlplus product/product@poims @test.sql `date "+%y%m%d"`

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입