* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Window7 32bit, Linux 64bit 등 |
|
[cubrid_rel] 수행 결과 |
|
[도움말]-[버전정보] 확인 |
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요 큐브리드 SQL중 DECODE 사용하다 문의점이 있어서 문의드립니다.
아래 SQL 사용시 DECODE시 해당 테이블의 컬럼으로 DECODE 값을 나타내는 것은 안되는 것이 맞는건가요?
☞ 해당 테이블 정보입니다.
■ msg_log (테이블)
- cont_seq numeric(11,0) (컬럼)
- msg_type numeric(1,0) (컬럼)
- sms_text varchar(160) (컬럼)
■ mms_contents_info (테이블)
- cont_seq numeric(11,0) (컬럼)
- msg_type (numeric(1,0) (컬럼)
- mms_body varchar(2000) (컬럼)
☞ DECODE(mlog.msg_type, 6 , 1, 2) 이런식으로 값을 넣어줄시 가능하지만 해당 컬럼 DECODE(mlog.msg_type, 6 , mms.mms_body, mlog_sms_text) 으로 출력시 안되네요
해당 컬럼으로 DECODE 값 출력시 안되는 것이 맞는것인지?
■ DECODE 사용 SQL
SELECT
DECODE(mlog.msg_type, 6 , mms.mms_body, mlog_sms_text) sms_txt
FROM msg_log mlog
,mms_contents_info mms
WHERE 1=1
AND mlog. cont_seq = mms.cont_seq
;
☞ CASE WHEN 사용시 THEN 뒷부분에 해당하는 컬럼(mms.mms_body) ELSE 에 해당 컬럼mlog.msm_text으로 넣을시 동작이 안되는 것이 맞는건가요?
■ CASE WHEN 사용 SQL
SELECT
CASE WHEN mlog.msg_type = 6 THEN mms.mms_body
ELSE mlog.msm_text
END AS sms_txt
FROM msg_log mlog
,mms_contents_info mms
WHERE 1=1
AND mlog.cont_seq = mms_cont_seq
;
☞ 위에 방법이 안된다고 하면 DECODE나 CASE WHEN 해당 컬럼 넣어서 사용할 수 있는 방법이나 다른 방법이 있다면 알려주시기를 부탁드립니다.