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 1254 게시물 읽기
No. 1254
바로밑에꺼 커서한건데요...도와주세요~
작성자
박인혁
작성일
2004-03-24 11:09
조회수
3,589

declare poi1_test cursor
for select  endindex, fie001, fie002, fie003, fie004, fie005, fie006, fie007 from poi1

open poi1_test

DECLARE @STR VARCHAR(1000)

DECLARE @tmpSTR VARCHAR(100)
DECLARE @STRATINDEX INT
DECLARE @ENDINDEX INT

DECLARE @fie001 VARCHAR(100)
DECLARE @fie002 VARCHAR(100)
DECLARE @fie003 VARCHAR(100)
DECLARE @fie004 VARCHAR(100)
DECLARE @fie005 VARCHAR(100)
DECLARE @fie006 VARCHAR(100)
DECLARE @fie007 VARCHAR(100)

SET @STR= '서울 강남구 논현동 82-15'

SET @STRATINDEX = 1
SET @ENDINDEX = 1


WHILE(@ENDINDEX < LEN(@STR))
BEGIN
SET @ENDINDEX = CHARINDEX(' ', @STR, @STRATINDEX)

IF(@ENDINDEX = 0)
SET @ENDINDEX = LEN(@STR)

SET @tmpSTR = SUBSTRING(@STR, @STRATINDEX, @ENDINDEX - @STRATINDEX)


IF(RIGHT(@tmpSTR, 2)='서울')
SET @fie001 = @tmpSTR
              else IF(RIGHT(@tmpSTR, 2)='대전')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='부산')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='광주')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='울산')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='제주')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='대구')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='인천')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='경기')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='경남')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='경북')
SET @fie001 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 2)='충남')
SET @fie001 = @tmpSTR
              ELSE IF(RIGHT(@tmpSTR, 2)='충북')
SET @fie001 = @tmpSTR
              ELSE IF(RIGHT(@tmpSTR, 2)='전남')
SET @fie001 = @tmpSTR
              ELSE IF(RIGHT(@tmpSTR, 2)='전북')
SET @fie001 = @tmpSTR
              ELSE IF(RIGHT(@tmpSTR, 2)='강원')
SET @fie001 = @tmpSTR
ELSE IF((RIGHT(@fie001, 2)='서울' OR RIGHT(@fie001, 2)='전북' OR RIGHT(@fie001, 2)='강원' OR
RIGHT(@fie001, 2)='전남' OR RIGHT(@fie001, 2)='경북' OR RIGHT(@fie001, 2)='경남' OR RIGHT(@fie001, 2)='충
북' OR RIGHT(@fie001, 2)='충남' OR RIGHT(@fie001, 2)='제주' OR RIGHT(@fie001, 2)='경기' OR RIGHT(@fie001, 2)
='인천' OR RIGHT(@fie001, 2)='광주' OR RIGHT(@fie001, 2)='울산' OR RIGHT(@fie001, 2)='부산' OR RIGHT
(@fie001, 2)='대구' OR RIGHT(@fie001, 2)='대전') AND RIGHT(@tmpSTR, 1)='구')
SET @fie002 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 1)='시')
SET @fie002 = @tmpSTR
ELSE IF(RIGHT(@fie002, 1)='시' AND RIGHT(@tmpSTR, 1)='구')
SET @fie003 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 1)='면')
SET @fie003 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 1)='동')
SET @fie004 = @tmpSTR
ELSE IF(RIGHT(@tmpSTR, 1)='리')
SET @fie004 = @tmpSTR
ELSE IF(CHARINDEX('-', @tmpSTR, 1)>0)
BEGIN
SET @fie006 = SUBSTRING(@tmpSTR, 1, CHARINDEX('-', @tmpSTR, 1) -1)
SET @fie007 = SUBSTRING(@tmpSTR, CHARINDEX('-', @tmpSTR, 1)+1, LEN
(@tmpSTR))
END
ELSE
SET @fie006 = @tmpSTR


SET @STRATINDEX = @ENDINDEX + 1
END



SELECT @fie001 [1], @fie002 [2], @fie003 [3], @fie004 [4], @fie005 [5], @fie006 [6], @fie007 [7]


CLOSE poi1_test

DEALLOCATE poi1_test

이원문이란분이 도와주셔서 진도가 여기까지 나왔습니다.
제가 sql이란걸 배운지가..이제 20일정도 되서리...커서란걸 전혀 모르고 있었습니다.

여기저기 훑어보고 얼추 선언하고 닫고 다 한것 같은데...

결과값이 하나만 나옵니다.

1        2          3           4           5        6    7
서울   강남구   NULL     논현동   NULL  82   1

이렇게만 나오고

poi1이라는 테이블에 있는 다른데이터는 안나오는데...

 

바로 밑에 질문 올린걸 지금 짜본거거든요...

 

poi1이란 테이블에 3백만개의 데이터를 분리해야하는데...왜 저거 하나만 나오는 거죠?

제가 뭔가 선언을 잘못한건가요?

아..그리고...계속 묻게 되는데...
마지막 지번부분이 한자리만 나오는데...+2를 해도...-1을 해도...

지번이 80-20인경우는 20이 나와야되는데...2만나와요.. 왜그렇죠..도와주세요~

 

[Top]
No.
제목
작성자
작성일
조회
1257두개의 쿼리를 합치려고 합니다 [2]
이원태
2004-03-24
4928
1256cgi DB ㅡ> ms-sql DB / access DB 변환 [2]
문티스
2004-03-24
3159
1255에러 좀 누가 도와주세요 ㅠ.ㅠ
나나
2004-03-24
3488
1254바로밑에꺼 커서한건데요...도와주세요~
박인혁
2004-03-24
3589
1253필드분리입니다. 도와주세요~
박인혁
2004-03-23
3312
1252비교해서 일치하는값 뽑아내는건데요.... [1]
박인혁
2004-03-23
3341
1251DB별 table 이름을 가져오고 싶습니다. [1]
이준영
2004-03-23
3701
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다