database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4321 게시물 읽기
No. 4321
업데이트 문장에서 메소드 문의.
작성자
궁금이
작성일
2008-07-09 14:33
조회수
5,186

오라클에서의 쿼리 입니다.

UPDATE COMPAY_M SET C_FLAG = 'Y'
                       WHERE  (C_FLAG IS NULL OR C_FLAG = 'N')
                       AND    (COLUMN1||COLUMN2||COLUMN3) IN (SELECT I_NAMEFROM COMPAY_D WHERE I_USER IS NULL)

근데 이것을 MS-SQL DB에서 실행하니...
1. 데이터베이스 SQL는 이문맥에서  IS NULL를 지원하지 않습니다 -> C_FLAG IS NULL이것이 문제..
2. 데이터베이스 SQL는 이문맥에서 ||를 지원하지 않습니다  -> COLUMN1||COLUMN2||COLUMN3 에서 오류..
3. 데이터베이스 SQL는 이문맥에서 subqueries를 지원하지 않습니다 -> SELECT I_NAMEFROM COMPAY_D WHERE I_USER IS NULL 에서 오류

1번의 경우는 C_FLAG = '' 이케하면되고..
2번과 3번은 어케 해야하나여? 저도 찾는 중인데.. 잘 모르겠어여!

참고로 오라클 DB toad 에서 실행합니다. 오라클 설정을 하여 MS-SQL DB연결이 되어서 toad에서 진행하는것입니다.

이 글에 대한 댓글이 총 5건 있습니다.

데이터베이스에서 NULL이 없는 경우는 없죠 

그리고 공히 비교 연산이 안되므로 IS라는 연산을 쓰죠 

제가 볼떄는 COLUMN +1 의 문제인듯하구요. 이런 쿼리로 바뀌지 않을까 싶습니다.

 

 

UPDATE A

        SET C_FLAG = 'Y'

FROM

               COMPAY_M A

        INNER JOIN  (SELECT I_NAMEFROM WHERE I_USER IS NULL) B

        ON A.COLUMN1  + A.COLUMN2 + A.COLUMN3 = I_NAMEFROM

여리님이 2008-07-09 18:35에 작성한 댓글입니다. Edit
답변 감사합니다. 문장에 의문이 있어 다시 질문합니다.
" NAMEFROM " 이부분에서 from 다음에 있어야할 테이블명이 없는데...
아래의 쿼리 문장의 완성쿼리 인지요!? 확인 부탁드립니다.

즐건 하루 보네세요!

UPDATE A SET C_FLAG = 'Y'
FROM COMPAY_M A
INNER JOIN  (SELECT I_NAMEFROM WHERE I_USER IS NULL) B
ON A.COLUMN1  + A.COLUMN2 + A.COLUMN3 = I_NAMEFROM

질문자님이 2008-07-10 09:53에 작성한 댓글입니다. Edit

SELECT I_NAMEFROM COMPAY_D WHERE I_USER IS NULL



=> 이 문장이 이미 틀린 문장이네요. 

아마도 


SELECT I_NAME FROM COMPAY_D WHERE I_USER IS NULL


라면 

INNER JOIN  (SELECT I_NAME FROM  COMPAY WHERE I_USER IS NULL)



이런 형식으로 하시면 되겠네요

여리님이 2008-07-10 13:46에 작성한 댓글입니다. Edit
제가 어리석어 여리님의 답변을 이해하지 못해서 죄송합니다.

1LINE - UPDATE A SET C_FLAG = 'Y'
2LINE - FROM COMPAY_M A
3LINE - INNER JOIN  (SELECT I_NAMEFROM WHERE I_USER IS NULL) B
4LINE - ON A.COLUMN1  + A.COLUMN2 + A.COLUMN3 = I_NAMEFROM

답변해주신 원문입니다.

2라인에서 FROM절이 올수 있는건가여?
4라인에서 A.COLUMN1  + A.COLUMN2 에서의 " + "로 사용하면 값을 더하는것 아닌가여?
              가령 데이타가 COLUMN1  에 값이 1 이고 COLUMN2  에 값이 2 라고 가정했을때...
              결과값 - 3 가 나오지 않을까 싶네요! 말그대로 더하고가 되지 않을까여? SQL은 잘 몰라서..
              원하는값 - 12 값으로 문장을 이어서 나오기를 해야하다는것이죠!
                             컬럼 1에 KO 이고 컬럼 2에 REA 라고 하면 합쳐서 KOREA가 되는것이죠!
                             그래서 컬럼 I_NAME과 같은 값인지를 비교하는것이거든여!
질문자님이 2008-07-10 14:57에 작성한 댓글입니다. Edit

1, from 절 있을수 있습니다. 온라인 도움말의 from 절과 update 구문을 살펴보심이 좋을듯 합니다.
2, 숫자는 더해지고 문자는 concatination 됩니다. 숫자를 concatination 할려면 문자 varchar(100) 정도로 convert 해서 + 하시면 됩니다. 

join update 와 조인의 이해가 부족한듯 합니다.

m님이 2008-07-11 09:51에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4324데이타 insert [4]
WW
2008-07-10
5663
4323한테이블에 넣을수 있는 최대데이타건수 [3]
WW
2008-07-10
5110
4322스토어드 프로시져에서 특정 문자 찾기 [1]
kimjeehyun
2008-07-09
5288
4321업데이트 문장에서 메소드 문의. [5]
궁금이
2008-07-09
5186
4320데이타베이스 위치를 변경문의 부탁합니다. [1]
초보자
2008-07-09
4736
4319쿼리 질문 드립니다. [2]
김영윤
2008-07-07
5198
4316깨진 mdf 복원시 에러가 나옵니다.
free
2008-07-05
5314
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다