mysql 쿼리 한번만 봐주세요ㅠㅠ 0 7 851

by 고래 [2021.01.05 13:35:05]


 

declare @sql varchar(max);
   declare @now datetime;
   set @now = now();
   set @sql = '
   select *
   from msg_result_'+ DATE_FORMAT(@now, '%Y%m') '
   '
   EXEC (@sql);

 

 

테이블명이

msg_result_202101

msg_result_202102

 

이런식으로 자동으로 생성되는게 있어서 동적으로 해봤는데.. 안되네요 ㅠㅠ 뭐가 잘못된걸까요..

 
by pajama [2021.01.05 13:57:08]

안녕하세요~ 동적쿼리 사용하는 방법을 찾아서 mariadb 에서 해봤습니다.

 

MariaDB [test]> create table msg_result_202101 (a varchar(20));
Query OK, 0 rows affected (0.005 sec)

MariaDB [test]> insert into msg_result_202101 values ('result1');
Query OK, 1 row affected (0.001 sec)

MariaDB [test]> set @sql = concat ('select * from msg_result_',DATE_FORMAT(now(), '%Y%m'));
Query OK, 0 rows affected (0.000 sec)

MariaDB [test]> prepare stmt from @sql;
Query OK, 0 rows affected (0.000 sec)
Statement prepared

MariaDB [test]> execute stmt;
+---------+
| a       |
+---------+
| result1 |
+---------+
1 row in set (0.000 sec)

 


by 마농 [2021.01.05 14:22:05]

+ 연산자가 문자 연결 기능을 한다고 하면.
date_format() 뒤에 + 가 누락되었네요. 아니면 뒤쪽 따옴표가 필요 없으면 아예 빼버려도 되구요.
+ 연산자가 문자 연결 기능을 못한다고 한다면. + 대신 CONCAT 함수를 이용해야 할 듯 합니다.


by 고래 [2021.01.05 14:24:58]

마농님 항상 감사드립니다..

오늘 오전부터 하루종일..  MSG_RESULT_  뒤에 붙는 숫자를 동적으로 해결해야해서..

이리저리 하고 있는데 + 연사자와 따옴표 처리를 제대로 못하고있습니다. 어떻게 해야하는지 여쭤봐도될까요


by pajama [2021.01.05 14:28:10]

+ 연산자로 문자열 연결하는 기능은 mssql 같습니다. mysql은 '+' 나 '||' 로 안되고 concat만 가능한 것 같네요.


by 고래 [2021.01.05 14:29:24]

파자마님 감사합니다. MYSQL에서는 + 연산자로 해결이 안될까요

MYSQL에서 + 연산자가 안된다면, 위에 알려주신방법으로 접근해야겠네요


by pajama [2021.01.05 14:31:22]

연산자는 DB 자체 기능이라 원하시는 방식으로 처리하기는 어렵지 않을까요..?


by 고래 [2021.01.05 14:33:15]

네 정말 감사합니다. 위에 알려주신방법으로 처리해볼게요 

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