[SQL] 구분 위치에 의해 분할 문자열 오라클 SQL을 사용하여
SQL구분 위치에 의해 분할 문자열 오라클 SQL을 사용하여
나는 문자열을 가지고 있고 특정 위치에 구분하여 해당 문자열을 분할하고 싶습니다.
예를 들어, 내 문자열 F / P / O와 I가 찾고 있어요 결과입니다 :
따라서, 나는 먼 구분하여 문자열을 분리하고 싶습니다. 참고 : 내 문자열의 일부는 내 작품 벌금 아래 SQL 및 반환 결과를 원하는되는 F / O입니다.
다음과 같이 SQL I는 썼다 :
SELECT Substr('F/P/O', 1, Instr('F/P/O', '/') - 1) part1,
Substr('F/P/O', Instr('F/P/O', '/') + 1) part2
FROM dual
그 결과는 다음과 같습니다
왜 이런 일이 일어나고이며 어떻게 해결할 수 있습니까?
해결법
-
==============================
1.이를 위해 () REGEXP_SUBSTR를 사용하고 싶습니다. 이것은 당신의 예를 들어 작동합니다 :
이를 위해 () REGEXP_SUBSTR를 사용하고 싶습니다. 이것은 당신의 예를 들어 작동합니다 :
select regexp_substr(val, '[^/]+/[^/]+', 1, 1) as part1, regexp_substr(val, '[^/]+$', 1, 1) as part2 from (select 'F/P/O' as val from dual) t
여기에, 그런데, SQL 바이올린입니다.
아차. 나는 그것이 마지막 구분 기호를 말한다 질문의 일부를 놓쳤다. 이를 위해, 우리는 첫 번째 부분에 대한 regex_replace ()를 사용할 수 있습니다 :
select regexp_replace(val, '/[^/]+$', '', 1, 1) as part1, regexp_substr(val, '[^/]+$', 1, 1) as part2 from (select 'F/P/O' as val from dual) t
그리고 여기이 해당 SQL 바이올린입니다.
-
==============================
2.나는이 오래된 질문이다 알지만,이 SUBSTR과 INSTR이 충분있는 간단한 요구 사항입니다. 정규 표현식은 여전히 느리고 이전 SUBSTR 이상과 기능 INSTR CPU 집약적 인 작업이다.
나는이 오래된 질문이다 알지만,이 SUBSTR과 INSTR이 충분있는 간단한 요구 사항입니다. 정규 표현식은 여전히 느리고 이전 SUBSTR 이상과 기능 INSTR CPU 집약적 인 작업이다.
SQL> WITH DATA AS 2 ( SELECT 'F/P/O' str FROM dual 3 ) 4 SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1, 5 SUBSTR(str, Instr(str, '/', -1, 1) +1) part2 6 FROM DATA 7 / PART1 PART2 ----- ----- F/P O
당신이 멀리 구분 기호를 원하는 말했듯이, 그것은 역에서 첫 번째 구분 기호를 의미 할 것입니다.
당신은 괜찮다고 방법,하지만 당신은 INSTR의 경우 start_position 누락되었다. 경우 start_position이 음수 인 경우, INSTR 기능 수는 문자열의 시작으로 다음 검색을 문자열의 끝에서 문자의 경우 start_position 번호를 백업하고.
from https://stackoverflow.com/questions/26878291/split-string-by-delimiter-position-using-oracle-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 데이터베이스에 가장 가까운을 찾을 수있는 가장 좋은 방법 일 것입니다 무슨 RGB 값을 감안할 때? (0) | 2020.06.23 |
---|---|
[SQL] MySQL의 쿼리에 일련 번호를 생성 (0) | 2020.06.23 |
[SQL] 패스에서 PostgreSQL을보기로 ""매개 변수? (0) | 2020.06.23 |
[SQL] 복합 기본 키 : 그것이 좋은지 나쁜지 (0) | 2020.06.23 |
[SQL] Windows 인증을 사용하여 SQL 서버에 연결 (0) | 2020.06.23 |