SYS_CONNECT_를 사용하는 경우 Oracle ORA-30004BY_PATH 함수,
ORA-30004
사용 시SYS_CONNECT_BY_PATH
함수, 열의 일부로 구분 기호를 사용할 수 없습니다.
조치: 열 값에 없는 다른 구분 기호를 사용한 다음 다시 시도하십시오.
오류:
select ...
Sys_Connect_By_Path(myVariable || ':' || mySecondVariable, ' --> ') "myNewVar",
...
작업:
select ...
Sys_Connect_By_Path(myVariable || ':' || mySecondVariable, ' -> ') "myNewVar",
...
데이터에서 우리는 다음과 같은 텍스트를 발견했습니다.
SomeText B--More Text
SomeText A--More Text
없기 때문에'-->'
아니면 그 마더 no.-->
데이터에서 왜 첫 번째 오류가 발생합니까?두 번째 것은 앞쪽과 끝쪽에 공간이 있습니다.
그 이유는--
의 일부입니다.-->
구분 기호(일부가 아님)->
구분 기호
데이터 값이 다음과 같은 경우에도-->
이 쿼리는 오류가 없어야 합니다.아래와 같이.
SQL> select Sys_Connect_By_Path('SomeText B-->More Text' || ':' || 'SomeText A-->More Text', ' --> ') "myNewVar"
from dual
connect by rownum<=3;
myNewVar
----------------------------------------------------
--> SomeText B-->More Text:SomeText A-->More Text
--> SomeText B-->More Text:SomeText A-->More Text --> SomeText B-->More Text:SomeText A-->More Text
--> SomeText B-->More Text:SomeText A-->More Text --> SomeText B-->More Text:SomeText A-->More Text --> SomeText B-->More Text:SomeText A-->More Text
위의 구분자는-->
공백을 주의합니다.이 공백은 구분자의 일부로 간주됩니다.chr(1)||chr(45)||chr(45)||chr(62)||chr(1)
이 전체 문자열은 데이터 또는 열 값의 일부가 아닙니다.
아래와 같이 오류가 발생할 수 있는 위치
SQL> select Sys_Connect_By_Path('SomeText B-->More Text' || ':' || 'SomeText A-->More Text', '-->') "myNewVar"
from dual
connect by rownum<=3;
ORA-30004: when using SYS_CONNECT_BY_PATH function, cannot have seperator as part of column value
30004. 00000 - "when using SYS_CONNECT_BY_PATH function, cannot have seperator as part of column value"
*Cause:
*Action: Use another seperator which does not occur in any column value,
then retry.
위의 구분자는-->
공백이 없다는 것을 알아차립니다.chr(45)||chr(45)||chr(62)
이 전체 문자열은 실제로 데이터 또는 열 값의 일부이므로 오류가 발생합니다.
다음은 테스트되지 않은 솔루션입니다.
select regexp_replace(Sys_Connect_By_Path('SomeText B-->More Text' || ':' || 'SomeText A-->More Text', ' -> '),' -> ','-->') "myNewVar"
from dual
connect by rownum<=3;
myNewVar
--------------------------------------
-->SomeText B-->More Text:SomeText A-->More Text
-->SomeText B-->More Text:SomeText A-->More Text-->SomeText B-->More Text:SomeText A-->More Text
-->SomeText B-->More Text:SomeText A-->More Text-->SomeText B-->More Text:SomeText A-->More Text-->SomeText B-->More Text:SomeText A-->More Text
설명 - 여기(위 질의에서)->
(공간 포함)은 여기서 데이터의 일부가 아닙니다.-->
열이 경로에 의해 연결되면,regexp_replace
의 모든 발생을 대체합니다.->
와 함께-->
그래서 이 방법으로 당신은 여전히 가질 수 있습니다.-->
대신 분리막으로->
.
언급URL : https://stackoverflow.com/questions/11870605/oracle-ora-30004-when-using-sys-connect-by-path-function
'programing' 카테고리의 다른 글
프로그래밍 방식으로 EditText의 입력 유형을 PASSWORD에서 NORMAL로 변경하거나 그 반대로 변경 (0) | 2023.08.16 |
---|---|
merge-commit이 중간에 있는 커밋을 지우는 방법은 무엇입니까? (0) | 2023.08.16 |
MySQL 타임스탬프 날짜 범위 선택 (0) | 2023.08.16 |
중첩 양식 그룹의 컨트롤을 각도로 가져오는 방법 (0) | 2023.08.16 |
iPhone / iOS : 우편번호 HTML5 키보드 제시 (0) | 2023.08.16 |