본문 바로가기
오류 해결 및 새로운 지식/API활용 및 오류 해결

개발자 화나는 literal does not match format string 오류 해결법

by 해삼2 2023. 10. 18.
728x90
반응형

 

예제) 수정 전

AND WM.WORK_LIMIT_DT < CURRENT_DATE

로컬에서는 잘 되는데 서버만 올리면 literal does not match format string 에러 해결 했던 내용 정리 !! 

 

수정 후 

AND WM.WORK_LIMIT_DT &it; TO_CHAR(SYSDATE, 'YYYYMMDD')

 

 

XML문서 특수 문자 처리 수식

< (작은 부등호):
수정: &lt;
설명: XML에서 열린 태그를 나타내는 특수 문자입니다. <를 직접 사용하지 말고 &lt;로 대체해야 합니다.
> (큰 부등호):

수정: &gt;
설명: XML에서 닫힌 태그를 나타내는 특수 문자입니다. >를 직접 사용하지 말고 &gt;로 대체해야 합니다.
& (앰퍼샌드):

수정: &
설명: XML 엔터티 기호를 시작하는 문자입니다. &를 직접 사용하지 말고 &로 대체해야 합니다.
' (작은따옴표):

수정: &apos;
설명: XML에서 문자열 값의 작은따옴표를 나타내는 특수 문자입니다. '를 직접 사용하지 말고 &apos;로 대체해야 합니다.
" (큰따옴표):

수정: &quot;
설명: XML에서 문자열 값의 큰따옴표를 나타내는 특수 문자입니다. "를 직접 사용하지 말고 &quot;로 대체해야 합니다.
이러한 특수 문자는 XML 문서 내에서 특별한 의미를 갖고 있기 때문에 해당 문자를 직접 사용하지 않고 엔터티 코드로 대체하여 사용해야 합니다. 이렇게 함으로써 XML 문서의 유효성을 유지하고 특수 문자가 데이터로 해석되는 것을 방지할 수 있습니다.

 

CDATA 사용

CDATA는 "Character Data"의 약자로, XML 문서 내에서 일반 텍스트 데이터를 나타내기 위한

메커니즘입니다.

CDATA 섹션은 XML 문서 내에서 특수 문자와 마크업을 피하고 텍스트 데이터를 그대로 유지하기 위해

사용됩니다.


특수 문자 포함: 

XML 문서 내에서 <, >, &, ', "와 같은 특수 문자를 사용하려는 경우, 

이러한 문자를 그대로 사용하면 XML 파서가 오해하거나 해석할 수 있습니다. 

CDATA 섹션을 사용하면 이러한 특수 문자를 이스케이프하지 않고 사용할 수 있습니다.

글자 데이터 블록: 

CDATA 섹션은 긴 텍스트 블록을 다룰 때 유용합니다. 

예를 들어, 코드 예제, HTML 코드, 스크립트 코드 또는 다른 마크업 언어를 포함하는 경우,

CDATA 섹션을 사용하여 이러한 데이터를 나타낼 수 있습니다.

 

하지만 CDATA에서 특수 문자를 사용 하는 식을 XML에 적용 하는 경우에도 에러가 생길수 있다.

그래서 INSERT문이나 UPDATE에서만 사용 하길 

 

CDATA및 CURRENT_DATE 사용시 에러 뜨는 이유

<![CDATA[<]]>와 &lt;는 서로 다른 개념입니다. 이해를 돕기 위해 각각의 차이점을 설명해드리겠습니다.

<![CDATA[<]]>: 

CDATA 섹션은 XML 내에서 특수 문자나 마크업을 무시하고 그대로 표시하도록 지정하는 방법입니다. 

이것은 XML 파서가 내용을 파싱하지 않고 그대로 유지하도록 합니다. 

CDATA 섹션을 사용하면 특수 문자인 <를 직접 표시할 수 있지만, 

Oracle SQL 쿼리에서는 이것을 잘못 해석할 수 있으며 오류가 발생할 수 있습니다.

&lt;: &lt;는 HTML 및 XML에서 < 문자를 나타내는 엔터티 코드입니다. 

이것은 XML 파서 및 SQL 엔진에서 올바르게 해석됩니다. 

즉, < 문자를 나타내기 위해 엔터티 코드로 대체되며, 이는 문제 없이 작동합니다.

따라서 Oracle SQL 쿼리에서는 < 문자를 나타내기 위해 &lt;와 같은 엔터티 코드를 사용하는 것이 

바람직합니다. 

<![CDATA[<]]>를 사용하면 Oracle SQL 엔진에서 이를 잘못 해석할 수 있으며,

"literal does not match format string"와 같은 오류가 발생할 수 있습니다.

요약하면, CDATA 섹션을 사용하는 것은 XML 문서의 특수 문자 및 마크업을 다루는 방법으로, 

SQL 쿼리 내에서 엔터티 코드를 사용하여 <와 >와 같은 특수 문자를 대체해야 합니다.

 

또한 CURRENT_DATE데이트도 서버상에서는 현재 날짜를 가져오는데 비교문에 넣으면 날짜형식을 제대로 못 불러와 에러가 생길수 있습니다.

728x90
반응형