http://www.gurubee.net/article/62172
특수문자 기준 문자열 자르기 문의 드립니다~
안녕하세요~ 요즘 날씨가 많이 포근해졌네요~ 즐거운 한주 되세요~
문자열 ';' 기준으로 아래 값들을
HT1816112121400121;로스엔젤레스;부산광역시 강서구 대저1동 4302-22
HT7014021412091123;대한민국;부산광역시 강서구 대저1동 4302-22
HT1611221911240214;오스트레일리아;부산광역시 강서구 대저1동 4302-22
A컬럼에 HT1816112121400121
B컬럼에 로스엔젤레스
C컬럼에 부산광역시 강서구 대저1동 4302-22
A,B,C 컬럼에 나누어 넣으려고 합니다...
SELECT BIGO, SUBSTR(BIGO,1,INSTR(컬럼,';')-1) A, REVERSE(SUBSTR(REVERSE(BIGO), 19, INSTR(REVERSE(BIGO), ';') -1)) B, REVERSE(SUBSTR(REVERSE(BIGO), 1, INSTR(REVERSE(BIGO), ';') - 1)) C
FROM 테이블명 WHERE BIGO LIKE '%;%'; 이렇게 했더니...
B에 들어가는 값들이 '로스엔젤레스;부산광역시' 또는 '대한민국;부산광역시 강서구' 이런식으로 들어가는데요...
B컬럼 구문 어느곳이 틀린건지 문의 드립니다...
그리고 가운데 '로스엔젤레스, 대한민국, 오스트레일리아' 만 가져오려고 구문을 짜봤는데
'로스엔젤레스;부산광역시' 이렇게 나옵니다...
SELECT BIGO
, REGEXP_REPLACE(SUBSTR(BIGO, INSTR(BIGO, ';', 1) +1), '\(;*\)') T
FROM (SELECT BIGO FROM 컬럼명);
두개의 쿼리에 대해 조언 부탁드리겠습니다.....
문자열 ';' 기준으로 아래 값들을
HT1816112121400121;로스엔젤레스;부산광역시 강서구 대저1동 4302-22
HT7014021412091123;대한민국;부산광역시 강서구 대저1동 4302-22
HT1611221911240214;오스트레일리아;부산광역시 강서구 대저1동 4302-22
A컬럼에 HT1816112121400121
B컬럼에 로스엔젤레스
C컬럼에 부산광역시 강서구 대저1동 4302-22
A,B,C 컬럼에 나누어 넣으려고 합니다...
SELECT BIGO, SUBSTR(BIGO,1,INSTR(컬럼,';')-1) A, REVERSE(SUBSTR(REVERSE(BIGO), 19, INSTR(REVERSE(BIGO), ';') -1)) B, REVERSE(SUBSTR(REVERSE(BIGO), 1, INSTR(REVERSE(BIGO), ';') - 1)) C
FROM 테이블명 WHERE BIGO LIKE '%;%'; 이렇게 했더니...
B에 들어가는 값들이 '로스엔젤레스;부산광역시' 또는 '대한민국;부산광역시 강서구' 이런식으로 들어가는데요...
B컬럼 구문 어느곳이 틀린건지 문의 드립니다...
그리고 가운데 '로스엔젤레스, 대한민국, 오스트레일리아' 만 가져오려고 구문을 짜봤는데
'로스엔젤레스;부산광역시' 이렇게 나옵니다...
SELECT BIGO
, REGEXP_REPLACE(SUBSTR(BIGO, INSTR(BIGO, ';', 1) +1), '\(;*\)') T
FROM (SELECT BIGO FROM 컬럼명);
두개의 쿼리에 대해 조언 부탁드리겠습니다.....
글 등 록 | 목록보기 |
댓글 목록
-- 1. 어차피 a 는 고정 자리수일텐데 Instr 은 뭐하러 하나요?
-- 2. Why Reverse?
-- 3. 정규식 패턴 사용이 적절하지 않고요...
WITH
t
AS
(
SELECT
'HT1816112121400121;로스엔젤레스;부산광역시 강서구 대저1동 4302-22'
bigo
FROM
dual
UNION
ALL
SELECT
'HT7014021412091123;대한민국;부산광역시 강서구 대저1동 4302-22'
FROM
dual
UNION
ALL
SELECT
'HT1611221911240214;오스트레일리아;부산광역시 강서구 대저1동 4302-22'
FROM
dual
)
SELECT
bigo
-- 1. a 가 자리수 고정인 경우
, SUBSTR(bigo, 1, 18) a1
, SUBSTR(bigo, 20, INSTR(bigo,
';'
, 1, 2)-20) b1
, SUBSTR(bigo, INSTR(bigo,
';'
, 1, 2)+1) c1
-- 2. 자리수와 상관 없이
, SUBSTR(bigo, 1, INSTR(bigo,
';'
)-1) a2
, SUBSTR(bigo, INSTR(bigo,
';'
)+1, INSTR(bigo,
';'
, -1)-INSTR(bigo,
';'
)-1) b2
, SUBSTR(bigo, INSTR(bigo,
';'
, -1)+1) c2
-- 3. 정규식 이용
, REGEXP_SUBSTR(bigo,
'[^;]+'
, 1, 1) a3
, REGEXP_SUBSTR(bigo,
'[^;]+'
, 1, 2) b3
, REGEXP_SUBSTR(bigo,
'[^;]+'
, 1, 3) c3
FROM
t
;