문자 오라클 뒤에 문자열을 가져오는 방법
있습니다VP3 - Art & Design and HS5 - Health & Social Care
다음에 끈을 받아야 합니다.'-'
오라클에서.서브스트링을 사용하여 이 작업을 수행할 수 있습니까?
이렇게 간단한 문자열 작업을 위해서는 베이스를 사용할 수 있습니다.INSTR()
그리고.SUBSTR()
기능들.아래 쿼리에서 하이픈 뒤 두 위치에서 시작하는 열의 하위 문자열을 사용합니다.
SELECT
SUBSTR(col, INSTR(col, '-') + 2) AS subject
FROM yourTable
우리는 또한 사용할 수 있습니다.REGEXP_SUBSTR()
여기서(고든의 답변 참조), 그러나 조금 더 복잡할 것이며 성능이 위의 쿼리만큼 좋지 않을 수 있습니다.
사용할 수 있습니다.regexp_substr()
:
select regexp_substr(col, '[^-]+', 1, 2)
선택적 공간을 제거하려면 다음을 사용할 수 있습니다.trim()
:
select trim(leading ' ', regexp_substr(col, '[^-]+', 1, 2))
비타귀성 모수의 평균
1
소스의 첫 번째 문자에서 검색합니다.1
기본값이지만 두 번째 매개 변수를 제공하려면 이 값을 설정해야 합니다.2
두 번째 일치를 결과 하위 문자열로 사용합니다.기본값은 1입니다.
사용할 수 있는 항목:
SELECT CASE
WHEN INSTR(value, '-') > 0
THEN SUBSTR(value, INSTR(value, '-') + 1)
END AS subject
FROM table_name
또는
SELECT REGEXP_SUBSTR( value, '-(.*)$', 1, 1, NULL, 1 ) AS subject
FROM table_name
다음은 표본 데이터의 경우입니다.
CREATE TABLE table_name ( value ) AS
SELECT 'VP3 - Art & Design and HS5 - Health & Social Care' FROM DUAL UNION ALL
SELECT '1-2-3' FROM DUAL UNION ALL
SELECT '123456' FROM DUAL
두 출력 모두:
제목 || :------------------------------------------- |아트 & 디자인과 HS5 - 건강 & 소셜 케어 || 2-3 |무효 |
선행 공백 트리밍:
선행 공백을 트리밍하려면 다음을 사용할 수 있습니다.
SELECT CASE
WHEN INSTR(value, '-') > 0
THEN LTRIM(SUBSTR(value, INSTR(value, '-') + 1))
END AS subject
FROM table_name
또는
SELECT REGEXP_SUBSTR( value, '-\s*(.*)$', 1, 1, NULL, 1 ) AS subject
FROM table_name
두 출력 모두:
제목 || :------------------------------------------ |아트 & 디자인과 HS5 - 건강 & 소셜 케어 || 2-3 |무효 |
단순한 솔루션이 항상 작동하지 않는 이유:
SELECT SUBSTR(value, INSTR(value, '-') + 2) AS subject
FROM table_name
두 가지 경우에는 작동하지 않습니다.
- 다음의 인덱스를 찾습니다.
-
문자를 입력한 다음 두 문자를 건너뜁니다.-
문자 다음으로 가정된 공백 문자); 두 번째 문자가 공백 문자가 아니면 부분 문자열의 첫 번째 문자를 놓치게 됩니다(즉, 입력이 다음과 같은 경우).1-2-3
그러면 출력은 다음과 같습니다.-3
보다는2-3
). - 그것은 항상 있을 것이라고 가정합니다.
-
문자열의 문자. 그렇지 않으면 반환 대신 두 번째 문자부터 시작하는 하위 문자열을 잘못 반환합니다.NULL
(즉, 입력이 다음과 같은 경우)123456
그러면 출력은23456
NULL
).
정규식 사용:
SELECT REGEXP_SUBSTR(value, '[^-]+', 1, 2)
FROM table_name
번째 첫 번 이 하 문 을 찾 없 수 니 습 다 을 열 뒤에 부분 을 찾지 .-
첫와 두 ; 첫 번 두 번 사 이 하 의 문 을 열 찾 습 니 자 다 위 문 자 째 째 와 니 다 찾 습 ▁character ; 을 ▁it ▁the ▁between ▁will▁find 자 ; ▁the ring 문-
를 사용하고 합니다.-
문자).그래서 만약 입력이VP3 - Art & Design and HS5 - Health & Social Care
은 "그면출력은러은출"입니다.Art & Design and HS5
▁than▁the. Art & Design and HS5 - Health & Social Care
.
언급URL : https://stackoverflow.com/questions/45165587/how-to-get-string-after-character-oracle
'programing' 카테고리의 다른 글
Oracle - ORA-01489: 문자열 연결 결과가 너무 깁니다. (0) | 2023.06.20 |
---|---|
중첩된 Git 저장소? (0) | 2023.06.20 |
SQL Server 저장 프로시저 테이블 반환 (0) | 2023.06.20 |
SQL Server: 테이블 메타데이터 추출(설명, 필드 및 해당 데이터 유형) (0) | 2023.06.20 |
Firebase CLI: "단일 페이지 앱으로 구성(모든 URL을 /index.html에 다시 쓰기)" (0) | 2023.06.20 |