programing

문자 오라클 뒤에 문자열을 가져오는 방법

abcjava 2023. 6. 20. 21:19
반응형

문자 오라클 뒤에 문자열을 가져오는 방법

있습니다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그러면 출력은23456NULL).

정규식 사용:

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

반응형