문득 떠오른 질문.. 3 16 2,007

by ahriow [2015.12.23 11:57:44]


WITH t AS(
SELECT '구루비' name, '꿈꾸는개발자' code 
UNION ALL
SELECT '질문과답변' name , 'Q&A' code
)
SELECT name,code, name+code as hoho FROM t

위같은 쿼리를 만들었다고 하면요..(여기선 mssql)

'name','code','hoho' 를 뽑아올수 있는 방법이 있을까요??

oracle / mssql / mysql 에 각각 혹시 함수같은게 있나요??

아니면.. 뽑아낼 수 있는 방법이 뭐가 있을까요???

by jkson [2015.12.23 12:27:11]

제가 언어능력이 모자라서 잘 이해를 못하는 편인데..

name, code, hoho를 뽑아온다는 의미가 뭐죠?


by 아발란체 [2015.12.23 13:14:25]

저도 난독증이 있어서... ㅋㅅㅋ)ㆀ

 

1. 위 값을 가지고 어떤 결과를 원하시는 것인지 명확한 것 같지 않습니다. 결과 예시를 주시면 도움이 될 것 같습니다.

 

2. name, code, hoho의 무엇을 뽑는다는 것인가용? 이미 조회 구문으로 name, code, hoho 뽑았는데 이 방법이 아닌 name, code, hoho를 뽑아야 하는 단서가 없습니다.

 

3. 이미 작성하신 SQL은 큰 내용으로는 Oracle, SQL, MySQL 에 다 잘 작동하는 SQL입니다.

(가상 테이블절 WITH, 오라클 가상 테이블절 DUAL 지정 제외) 근데 Oracle, SQL, MySQL에서? 각각? 함수? 각 DBMS에서 무엇을 위한 함수를 말씀하시는 것인지 역시 단서가 없습니다.

 

 


by ahriow [2015.12.23 13:50:57]

제가 질문을 읽어봤는데 참.. 표현력이 대단하네요 저는...;;;;;;;;;;;;;;;;;;

값은 상관없이 어필드명만 뽑아보고 싶은데 어떤 방법이 있을까요? 하는 간단한 질문입니다.

WITH t AS(
SELECT '구루비' name, '꿈꾸는개발자' code 
UNION ALL
SELECT '질문과답변' name , 'Q&A' code
)
SELECT (필드명뽑기)
FROM
 (
SELECT name,code, name+code as hoho FROM t
)  base_query

결과값 => "name,code,hoho"


by 아발란체 [2015.12.23 14:01:30]

존재하는 테이블이 아닌 WITH 구문으로 만든 결과의 항목을 말씀하시는건가요? 

WITH 구문절 같은디.. ㅋㅋ 전 패스.... (ㅠ_ㅡ)

만약 존재하는 테이블이면 METADATA 정보를 통해 쉽게 확인이 가능하고, 어플리케이션 단에서 확인해도 된다면 WITH절도 ODBC나 JDBC단에서 METADATA 관련 API로 추출 가능합니다... 근데 이쪽 질문은 아닌거 같네요. ㅠㅁㅠ


by ahriow [2015.12.23 14:36:42]

EMPLOYEE ( EMPNO, EMPNAME, TITLE, CITY, KU, DONG, SALARY, DNO) 

SELECT (조회하고있는필드명을가져와줘!!) AS result
FROM
(
SELECT EMPNO AS 사원번호,
       EMPNAME  AS 사원명,
       TITLE AS 직급,
       CITY + KU + DONG AS ADDRESS,
       SALARY

FROM   EMPLOYEE 
)

라고 실행시키면

result

'사원번호','사원명','직급','ADDRESS','SALARY'

이런식으로 결과값이 나오는걸 원한건데..ㅠㅠ

사원번호

사원명
직급
ADDRESS
SALARY

이렇게 나와두 되구요~

만약 뽑아오는 필드가 엄청 많다면 위와같은방법으로 확인할 수 있을까??

해서 올린 질문입니다ㅠ


by 약쟁이총각 [2015.12.23 15:08:45]

oracle 테이블은 all_tab_columns에서 검색하면 나올껀데..

with 절로 나오게 하는 부분은.. 글쎄요..


by jkson [2015.12.23 15:35:57]

어떤 이유로 컬럼명을 가지고 오고 싶으신 건지요? 단순히 select 문에 포함된 컬럼명을 표현하기는 좀 어려운 사항 같은데요.


by ahriow [2015.12.23 16:02:42]

제목대로 그냥 문득 떠오른 질문이에요...

혹시 저런것도 찾을 방법이 있을까 해서..


by 창조의날개 [2015.12.23 15:43:28]

WITH t AS(
SELECT '구루비' name, '꿈꾸는개발자' code FROM DUAL
UNION ALL
SELECT '질문과답변' name , 'QA' code FROM DUAL
)
SELECT *
FROM (
      SELECT NAME, CODE, name||code as hoho
      FROM T
      WHERE ROWNUM = 1
)unpivot (COL2 FOR COL1 IN (NAME, CODE, HOHO))
;

뭐 이런식으로 뽑을수는 있겠으나..

역시 컬럼명을 모르면 불가능 하겠네요..

 


by 우리집아찌 [2015.12.23 15:44:01]

DECLARE
   TYPE ref_cursor IS REF CURSOR;
   rc_         ref_cursor;  
   c_          NUMBER;
   i_          NUMBER;
   col_count_  NUMBER;
   desc_tab_   DBMS_SQL.DESC_TAB;
   v_result    VARCHAR(4000);
BEGIN
   OPEN rc_ FOR '
       SELECT DUMMY , DUMMY || ''BB'' AS TT
         FROM DUAL A
     
   ';
   c_ := DBMS_SQL.to_cursor_number(rc_);
 
   DBMS_SQL.DESCRIBE_COLUMNS(c_, col_count_, desc_tab_);
   FOR i_ IN 1..col_count_ LOOP
      DBMS_OUTPUT.PUT_LINE('col_max_len:' || desc_tab_(i_).col_max_len);
      DBMS_OUTPUT.PUT_LINE('col_name:' || desc_tab_(i_).col_name);
      DBMS_OUTPUT.PUT_LINE('col_type:' || desc_tab_(i_).col_type);  
--      DBMS_OUTPUT.PUT_LINE('col_size' || desc_tab_(i_).col_size);
      DBMS_OUTPUT.PUT_LINE('col_precision:' || desc_tab_(i_).col_precision);
      DBMS_OUTPUT.PUT_LINE('col_scale:' || desc_tab_(i_).col_scale);
      DBMS_OUTPUT.PUT_LINE('--------------------------------------------');
   END LOOP;
 
   DBMS_SQL.CLOSE_CURSOR(c_);
END;

 


by 아발란체 [2015.12.23 15:54:30]

★_★); 우왕. 이런 것도 있네용. 감사합니다.

근데 개발자가 이런 것도 알고 계시면 반칙 아닌가용? ㅋ

좋은 정보 감사합니다. 별표 클릭.


by ahriow [2015.12.23 16:01:36]

ㅠㅠ 이건 어떻게 확인해봐야하나요...

실행시키면 "익명 블록이 완료되었습니다." 라고만 나와서..

답을 주신것같은데 확인도 못해보는 초보는 웁니다...


by 우리집아찌 [2015.12.23 17:03:21]

//아발란체

전에 코드 제너레이터 만들때 쓰던건데요.. 오래되서 잘되나 몰겠어요..


by 우리집아찌 [2015.12.23 17:04:07]

SET SERVEROUTPUT ON ; 

먼저 실행해주세요.


by jkson [2015.12.23 17:05:58]

헐~ 새롭네요~ 잘돌아갑니다. ahriow님 툴에 dbms output 값 받아서 보여주는 기능이 있을 거예요~


by ahriow [2015.12.23 17:25:09]

우와 궁금해하면 답이나와.. 진짜 멋지십니다!!

앞으로도 이상한 질문 많이 하겠습니다!! 감사합니다!

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